Android - поле даты и времени, черт возьми!- ну, похоже, все равно!:) - PullRequest
2 голосов
/ 05 августа 2011

Я сохраняю значения из Calendar.getTime () в поле базы данных SQLite, которое называется «Создано», когда вставляются новые записи.

В поле «datetime» хранятся значения в следующем формате: EEE MMM dd HH: мм: сс z гггг.

Мое приложение имеет 2 средства выбора даты, поэтому вы можете выбрать начальную и конечную дату / время для создания диапазона - все, что мне нужно сделать, - это запустить запрос, чтобы вернуть записи, которые были созданы за этот промежуток времени, но это доставляет мне большую головную боль !

Мой запрос выглядит так:

public Cursor GetAllByDateRange(Date dtStart, Date dtEnd) {

    return database.query(DATABASE_TABLE, new String[] { 
            KEY_id, KEY_CREATED, KEY_VALUE, KEY_DESCRIPTION, KEY_ISEXPENSE}, 
            KEY_CREATED + " BETWEEN '" + dtStart + "' AND '" + dtEnd + "'",
            null, null, null, KEY_CREATED + " DESC");
}

Мне кажется, я понимаю проблему, но не знаю, как ее решить, я думаю, что этот подход не будет работать, потому что SQLite хранит даты в формате String (если это правда, я не уверен, почему у них даже есть тип Date!) , поэтому они сравниваются как строки, а не даты ..

Похоже, мои возможности ограничены, потому что мне нужно записать время и дату, потратив большую часть сегодняшнего дня на траление в сети, и я в полной растерянности - кто-нибудь может подсказать, как мне двигаться дальше?

Спасибо!

1 Ответ

2 голосов
/ 05 августа 2011

Если возможно, сохраняйте свои даты как целые числа в базе данных, сохраняя значение в миллисекундах из date.toTime ().Тогда гораздо проще создать экземпляр объекта date из новой даты (в миллисекундах), а затем вы можете отформатировать вывод в соответствии с локалью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...