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())