Ответ 1
Ниже запроса удаляются данные старше 2 дней:
String sql = "DELETE FROM myTable WHERE Save_Date <= date('now','-2 day')";
db.execSQL(sql);
Я хочу удалить все строки таблицы MYTABLE, которые старше x дней. Столбец SAVE_DATE Long - это время, когда строка была вставлена в таблицу.
Я пробовал это, но, судя по всему, он удаляет все мои строки:
long daysInMiliSec = new Date().getTime() - X
* (24L * 60L * 60L * 1000L);
return db.delete(MYTABLE , SAVE_DATE
" <= ?", new String[] { "" + daysInMiliSec }
Что не так?
Спасибо, что помогли мне.
Ниже запроса удаляются данные старше 2 дней:
String sql = "DELETE FROM myTable WHERE Save_Date <= date('now','-2 day')";
db.execSQL(sql);
Так как это первый хит на google несколько объяснений для начинающих:
Вам не нужны функции времени и даты из основной программы, которую вы используете для доступа к базе данных sqlite, но напрямую используете функции даты sqlite.
Вы создаете таблицу с записью строки для возраста, например:
CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, text TEXT, age INTEGER)
Вы пишете с ним
INSERT INTO test (text, age) VALUES ("bla", datetime('now'))
Здесь я использовал 'datetime', потому что это также позволит вам искать часы/минуты/секунды. Если вам не нужна эта дата ( "сейчас" ), достаточно.
Вот объяснение функции даты: https://www.sqlite.org/lang_datefunc.html
Чтобы выбрать все, что старше, чем, например, 5 минут:
SELECT * FROM test WHERE age <= datetime('now', '-5 minutes')
Вы можете увидеть больше этих возможностей на веб-сайте выше в разделе "Модификаторы".