Получить строки, где отметка времени столбца 2 дня назад - PullRequest
5 голосов
/ 26 января 2010

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

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

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

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

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

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

Спасибо, я благодарен за любые ответы.

РЕДАКТИРОВАТЬ : понял это: SELECT * FROM test WHERE timestamp < date('now', '-2 days')

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

Ответы [ 3 ]

4 голосов
/ 27 июля 2010

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

SELECT * FROM test WHERE my_timestamp < NOW() - INTERVAL '2 DAY';
1 голос
/ 26 января 2010

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

SELECT * FROM test WHERE timestamp < date('now', '-2 days')
0 голосов
/ 15 июня 2015
SELECT * FROM test WHERE timestamp <= datetime('now','-2 days')

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

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

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