Удаление из таблицы android sqlite

У меня есть столбец в таблице базы данных android sqlite. Значения в столбце такие:

2011/06/01
2011/06/02
2011/06/05
2011/06/10
2011/06/11
2011/06/13
2011/06/15
2011/06/16
2011/06/25
2011/06/26

У меня есть строка today="2011/06/27"

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

Как изменить код, чтобы добиться этого?

return db.delete(DATABASE_TABLE,where date="", null) > 0;

person Rasel    schedule 28.06.2011    source источник
comment
Используйте столбец даты в вашем SQL, а не строку   -  person Blundell    schedule 28.06.2011
comment
@Blundell это должен быть ответ, а не комментарий :)   -  person denis.solonenko    schedule 28.06.2011


Ответы (3)


Вы должны хранить свои даты в другом формате, проверьте функцию даты SQLite. Используйте YYYY-MM-DD вместо YYYY/MM/DD. У вас уже есть заказ на ваши даты, определенные его строковым представлением. Таким образом, вы можете использовать функцию даты SQLite для выбора правильных строк.

Даты старше 5 дней будут запрашиваться следующим образом.

... WHERE datecolumn < date('now', '-5 days') ...
person Flo    schedule 28.06.2011
comment
мой столбец даты не считается датой - person Rasel; 28.06.2011
comment
Добавьте свой оператор создания таблицы, чтобы мы могли видеть, кто вы создаете свою таблицу. - person Flo; 28.06.2011
comment
private static final String USAGE_TABLE = создать таблицу batteryUsage (целочисленный идентификатор, автоинкремент первичного ключа, + дата, не нулевая дата, текст времени, не нулевой, целочисленный уровень); - person Rasel; 28.06.2011

В sqllite нет типа даты

вы просто сохраняете данные, представленные в виде строки или int

затем используйте функции sqllite, основанные на дате, чтобы получить значения

person Tiger    schedule 15.07.2011

Вы должны использовать хранимую процедуру, а не писать службу. Вашему приложению будет проще автоматически обновлять записи.

См. ссылку: http://searchoracle.techtarget.com/answer/Time-based-stored-procedure-to-check-table-and-update-old-records

Другое решение — использовать дату вместо строки. Когда вы запускаете свой сервис, извлекайте данные как дату, а затем вы можете сделать простое сравнение.

person Paras Mendiratta    schedule 28.06.2011
comment
SQLite не предоставляет хранимых процедур. - person Flo; 28.06.2011
comment
Однако я дополнительно проверил, что SQLite не предоставляет хранимую процедуру, основанную на времени. - person Paras Mendiratta; 28.06.2011