У меня есть база данных sqlite в моем проекте Android, и я стараюсь выбирать все строки между датами. Но ни одна строка не возвращается этим запросом:android sqlite диапазон дат
String where = OperationEntry.COLUMN_NAME_ENTRY_ACCOUNT_FK + " = ? AND " +
OperationEntry.COLUMN_NAME_ENTRY_DATE + " > date('2013-01-01') AND "+
OperationEntry.COLUMN_NAME_ENTRY_DATE + " < date('2013-12-31') ;";
String[] whereValue = {accountName};
Cursor c = db.query(
OperationEntry.TABLE_NAME, // The table to query
projection, // The columns to return
where, // The columns for the WHERE clause
whereValue, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
sortOrder // The sort order
);
Кроме того, если я использую 2013-01-01 и 2014-12-31, все строки соответствия.
Я проверил с и без функции даты, у меня такая же проблема.
Обратите внимание, что OperationEntry.COLUMN_NAME_ENTRY_DATE является типом даты.
Вы можете мне помочь? Вы нашли ошибку в моем коде?
Thank's
Jonathan.
EDIT: Я разместил здесь дополнительный код. запрос для создания таблицы:
public static final String SQL_CREATE_ENTRIES =
"CREATE TABLE IF NOT EXISTS " + OperationEntry.TABLE_NAME + " (" +
OperationEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
... +
OperationEntry.COLUMN_NAME_ENTRY_DATE + " DATE, " + ...
")";
запрос для вставки:
GregorianCalendar calendar = ...;
String date = calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH);
ContentValues values = new ContentValues();
values.put(OperationEntry.COLUMN_NAME_ENTRY_TITLE, operation.getTitle());
values.put(OperationEntry.COLUMN_NAME_ENTRY_QTE, operation.getQte());
values.put(OperationEntry.COLUMN_NAME_ENTRY_DATE, date);
...
long newRowId;
newRowId = db.insert(
OperationEntry.TABLE_NAME,
null,
values);
Что такое формат значений в столбце даты вступления? (SQLite не имеет типа 'Date'.) –
Я просто добавляю некоторый код: как вы можете видеть, это тип даты в запросе создания, но я помещаю Strings. Я попробую с тиком TEXT как можно скорее. – user2769411
Преобразование 'calendar.get (Calendar.MONTH)' в строку не гарантирует двухзначных чисел. –