SQLite выбирает все записи на сегодняшний день и за предыдущий день

У меня есть следующая таблица в моей базе данных:

database.execSQL("create table " + TABLE_LOGS + " (" + COLUMN_ID + " integer primary key autoincrement," + COLUMN_ID_DAY_EXERCISE + " integer not null," + COLUMN_REPS + " integer not null," + COLUMN_WEIGHT + " real not null," + COLUMN_1RM + " real not null," + COLUMN_DATE + " integer not null" + ")"); 

Я сохраняю временную метку unix в поле COLUMN_DATE (целое число).

Теперь у меня есть следующая функция, которая захватывает все записи:

 public Cursor fetchCurrentLogs(long dayExerciseDataID) { // where day = today Cursor cursor = database.rawQuery("select " + MySQLiteHelper.COLUMN_ID + "," + MySQLiteHelper.COLUMN_REPS + ", " + MySQLiteHelper.COLUMN_WEIGHT + " " + "from " + MySQLiteHelper.TABLE_LOGS + " " + "where " + MySQLiteHelper.COLUMN_ID_DAY_EXERCISE + " = '" + dayExerciseDataID + "'", null); if (cursor != null) { cursor.moveToFirst(); } return cursor; } 

Теперь, что я хочу сделать, хочу, чтобы эта функция захватывала записи на сегодняшний день.

Затем я хочу сделать еще одну функцию точно такой же, но вместо того, чтобы получать записи на сегодня, я хочу, чтобы она получала записи за предыдущий день. Раньше я имел в виду самый последний день, который имеет записи, которые не сегодня. Так может быть, вчера, или 3 дня назад, или месяц назад.

Я знаю, что в MySQL вы можете сделать что-то подобное в текущий день:

where date_format(from_unixtime(COLUMN_DATE), '%Y-%m-%d')= date_format(now(), '%Y-%m-%d')

Что эквивалентно этому для SQLite?

Кроме того, может ли кто-нибудь помочь мне с предложением where за предыдущий день, как упоминалось выше?

Спасибо.

 String sql = "SELECT * FROM myTable WHERE myDate >= date('now','-1 day')"; Cursor mycursor = db.rawQuery(sql); 

РЕДАКТИРОВАТЬ:

 SELECT * from Table1 where myDate = (select max(myDate) from Table1 WHERE myDate < DATE('now') ) 

См. Документацию по функциям даты / времени :

 SELECT * FROM MyTable WHERE myDate >= date('now', '-1 days') AND myDate < date('now') 

Может быть, слишком поздно, но это может помочь кому-то. Я не делаю по-другому, как предыдущие разработчики, я просто хотел поставить свою версию и, вероятно, это даже не лучший …

  String selectQuery = "SELECT * FROM "+Your_table+" WHERE ("+Column_1+" = "+Value_For_Column1+" AND date("+Your_Column_With_Time_Values+") == date('now')) AND "+Some_Other_Column+" = "+Some_Other_Value+" OR "+Some_Other_Column+" = "+Some_Other_Value+" ORDER BY "+Your_Column+" DESC"; 

Если может быть какая-то ошибка, это может быть легко из-за конкатенации строк. Спасибо!!

Не делайте преобразования в вашем SQL-заявлении. Сделайте преобразование в вашем Java-методе. Попросите свой Java-метод создать полный оператор SQL. Все, что вам нужно, это функция преобразования Java DateTime в формат unix.

 Cursor cursor = database.rawQuery("select " + MySQLiteHelper.COLUMN_ID + "," + MySQLiteHelper.COLUMN_REPS + ", " + MySQLiteHelper.COLUMN_WEIGHT + " " + "from " + MySQLiteHelper.TABLE_LOGS + " " + "where " + MySQLiteHelper.COLUMN_ID_DAY_EXERCISE + " = '" + dayExerciseDataID + " OR " + MySQLiteHelper.COLUMN_ID_DAY_EXERCISE + " = '" + previousDay(dayExerciseDataID) + "'", null); 

Вам просто нужно создать этот метод previousDay.