SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Android - SQLite - SELECT BETWEEN Date1 AND Date2


Ok, então eu não consegui fazer com que as datas de string funcionassem, então eu tive que converter Datas de String em Datas de Calendário para Unix Time antes de adicioná-las ao banco de dados SQLite e convertê-las novamente (Unix Time para Calendar Dates to String) ao exibi-las. O Unix Time permite cálculos (ordenar por, classificar em ordem crescente, entre etc) feitos nas colunas de data e é o melhor método para usar após longas horas de tentativa e erro. Aqui está o código que acabei usando:
Cursor c = newDB.rawQuery("select ID, Date, Hours from " + tableName + " where Date BETWEEN '" + startDateQueryDate + "' AND '" + endDateQueryDate + "' ORDER BY Date ASC", null);

            if (c != null ) {
                if  (c.moveToFirst()) {
                    do {
                        int tempId = c.getInt(c.getColumnIndex("ID"));
                        long tempUnixTime = c.getLong(c.getColumnIndex("Date"));

                        //convert tempUnixTime to Date
                        java.util.Date startDateDate = new java.util.Date(tempUnixTime);

                        //create SimpleDateFormat formatter
                        SimpleDateFormat formatter1;
                        formatter1 = new SimpleDateFormat("dd/MM/yyyy", Locale.UK);

                        //convert Date to SimpleDateFormat and convert to String
                        String tempStringStartDate = formatter1.format(startDateDate);

                        int tempHours = c.getInt(c.getColumnIndex("Hours"));
                        results.add(+ tempId + "    Date: " + tempStringStartDate + "    Hours: " + tempHours);
                    }while (c.moveToNext());
                }
            }