Подтвердить что ты не робот

Удаление строк android sqlite старше x дней

Я хочу удалить все строки таблицы MYTABLE, которые старше x дней. Столбец SAVE_DATE Long - это время, когда строка была вставлена ​​в таблицу.

Я пробовал это, но, судя по всему, он удаляет все мои строки:

long daysInMiliSec = new Date().getTime() - X
            * (24L * 60L * 60L * 1000L);
return db.delete(MYTABLE , SAVE_DATE
            " <= ?", new String[] { "" + daysInMiliSec }

Что не так?

Спасибо, что помогли мне.

4b9b3361

Ответ 1

Ниже запроса удаляются данные старше 2 дней:

String sql = "DELETE FROM myTable WHERE Save_Date <= date('now','-2 day')"; 
db.execSQL(sql);

Ответ 2

Так как это первый хит на 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')

Вы можете увидеть больше этих возможностей на веб-сайте выше в разделе "Модификаторы".