DATETIME выбрать строки за последние 2 часа
Я пытаюсь выбрать строки за последние 2 часа. По какой-то причине это не работает. Синтаксис кода выглядит нормально и работает, когда он используется в других таблицах, но по какой-то причине, когда он используется в таблице Posts
, получить строки намного старше 2 часов.
SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_DATE, INTERVAL 2 HOUR)
Есть ли какие-либо проблемы с кодом? Есть ли другой способ написать его? Что может быть причиной этого?
Ответы
Ответ 1
Это потому, что вы используете CURRENT_DATE
, вместо этого следует использовать NOW()
или CURRENT_TIMESTAMP
.
Проблема заключается в том, что с использованием CURRENT_DATE
, являющегося значением даты, время по умолчанию равно 00:00:00
, поэтому, вычитая 2 часа, вы получаете 22:00:00
предыдущего дня, а не последние 2 часа...
Ответ 2
Вы можете использовать более простые обозначения:
SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR
Ответ 3
измените на это:
SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_TIMESTAMP, INTERVAL 2 HOUR)
Ответ 4
Вы можете попробовать этот
SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR)
Ответ 5
ни один из ответов выше не помог мне, попробуйте это:
SELECT * FROM POSTS WHERE DATE > DATEADD(HH, (-2), GETDATE())