SQLite и работа с датой

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
PawelShi
Сообщения: 3
Зарегистрирован: 07 фев 2018, 09:01

SQLite и работа с датой

Сообщение PawelShi » 07 фев 2018, 09:17

Собственно вопрос:
Как в SQL-запросе выбрать все записи на текущую дату?
Предыстория:
1. Поле в БД имеет тип INTEGER, т.к. SQLite не имеет специального типа для хранения даты.
2. Для сохранения даты в Android-приложении используется код:

Код: Выделить всё

Date date = new Date();
...
cv = new ContentValues();
...
cv.put(COLUMN_DATA, date.getTime());
...
long newId = db.insert(Table.TABLE_NAME, null, cv);
3. Для чтения данных:

Код: Выделить всё

Cursor c = db.query(Table.TABLE_NAME, null, selection, args, null, null, null);
if (c != null){
            if (c.moveToFirst()){
                indication = new Indication(c);
                Log.d(LOG_TAG, indication.toString());
            } else{
                Log.d(LOG_TAG, "getIndication.  Cursor NOT moved to First!!");
            }
            c.close();
        } else{
            Log.d(LOG_TAG, "getIndication.  Cursor is NULL");
        }
...
public Indication (Cursor c){
        super();
//        Log.d(TAG, "Constructor Indication on Cursor");
//        Читаем из БД
        int idx;
        for (String colName : c.getColumnNames()){
            idx = c.getColumnIndex(colName);
            switch (colName){
                case _ID:
                    _id = c.getLong(idx);
                    break;
                case COLUMN_DATA:
                    date = new java.sql.Date(c.getLong(idx));
                    break;
...
Т.о. в приложении данные по дате выводятся отлично - как записываю, так и читаю.
А вот как только возникла потребность создать запрос по выборке на конкретную дату - так все.
В самой БД это просто числа, конвертировать в дату она их не умеет.
Не могу сообразить как это сделать.

PawelShi
Сообщения: 3
Зарегистрирован: 07 фев 2018, 09:01

Re: SQLite и работа с датой

Сообщение PawelShi » 08 фев 2018, 06:18

На текущий момент решил так:
Из дате, на которую нужно найти, получаю 2 числа, чтобы получилось условие вида:

Код: Выделить всё

WHERE dt >= <нужная дата без времени> AND dt < <нужная дата + 1 день без времени>
Запрос выполняю с этим условие.

Есть лучшие решения?

Ответить