Получить строки, где столбцу метки времени 2 дня

У меня есть таблица, в которой есть столбец с отметкой времени в sqlite3. По умолчанию используется CURRENT_TIMESTAMP, так что при вставке строки вставляется текущее время. Теперь я пытаюсь получить строки, которые были вставлены 2 дня назад или более. Интересно, есть ли в этом смысл.

Читая документацию, я придумал:

SELECT * FROM test WHERE timestamp < strftime('%s', '-2 days')

но видимо это неправильно. Я придумал этот запрос, потому что он похож на то, как я выполняю тест в своем реальном коде:

strtotime($timestamp) < strtotime("-2 days").

Но я надеялся, что sqlite3 включает некоторые встроенные проверки для такого рода ситуаций.

Спасибо, я ценю любые ответы.

EDIT: разобрался: SELECT * FROM test WHERE timestamp < date('now', '-2 days')

Я оставлю это открытым, если кто-то может придумать что-то лучше.


person Jorge Israel Peña    schedule 26.01.2010    source источник
comment
Сойдет, не знал, что это этикет :D РЕДАКТИРОВАТЬ: Я приму это через два дня, тогда система позволит мне принять это :)   -  person Jorge Israel Peña    schedule 26.01.2010


Ответы (3)


В postgres (я знаю, что это не ваша платформа, но я пишу здесь для справки другим), вы также можете сделать следующее:

SELECT * FROM test WHERE my_timestamp < NOW() - INTERVAL '2 DAY';
person okie.floyd    schedule 27.07.2010

Так что я думаю, что понял это, это работает нормально для меня. Я не знаю, лучший ли это способ сделать это, но кажется довольно простым и, как я уже сказал, работает:

SELECT * FROM test WHERE timestamp < date('now', '-2 days')
person Jorge Israel Peña    schedule 26.01.2010
comment
Это учитывает разные часовые пояса? - person Takeshi Kaga; 16.03.2013

SELECT * FROM test WHERE timestamp <= datetime('now','-2 days')

где формат данных должен быть в одном из следующих форматов, как указано в ссылке

https://www.sqlite.org/lang_datefunc.html

person Kalai_Human    schedule 15.06.2015