2015-07-30 3 views
0
Cursor cursor = db.rawQuery("SELECT * FROM expenses WHERE expense_date > (SELECT DATE('now', '-7 day'));", null); 

У меня есть этот выше запрос, чтобы получить все записи, которые были вставлены за последние 7 дней. Но в результате этого запроса я получаю все записи. Столбец даты этих записей вставляется через Android DatePicker, и они находятся в формате 30-Jul-2015. Наверное, поэтому этот запрос работает неправильно. Есть ли способ сделать их последовательными, чтобы этот запрос работал правильно, или я пропускаю что-то еще? Любая помощь будет оценена по достоинству.Android: SQLite Получение всех записей, которые вставляются в последние 7 дней

ответ

1

Я никогда не пробовал использовать встроенные функции даты SQLite. Если быстро взглянуть на документацию по функциям даты SQLite here, кажется, что для их использования дата должна быть в формате YYYY-MM-DD, и именно поэтому ваш запрос терпит неудачу.

Вы можете сделать некоторые манипуляции и форматирование строк перед сохранением в db и использовать этот формат.

Лично я обычно форматируюсь таким образом, но без разделителей тире, тогда может использоваться простое меньше или больше, чем сравнение, рассматривая дату как обычный номер. Конечно, для отображения требуется некоторое преобразование назад и вперед, но под капотом он отлично работает.

int now = 20150730; 
String query = "SELECT * FROM expenses WHERE expense_date > '" + now-7 + "'";