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

MySQL SELECT timestamp (сейчас() - 3000);

Я пытаюсь сделать запрос, который возвращает результаты на основе метки времени, скажем, интервал в 30 минут.

Итак, я понял, что могу

SELECT * FROM x WHERE ts BETWEEN timestamp(now()-3000) AND timestamp(now())

Таким образом, это будет запрашивать все от x с отметками времени в столбце ts за последние 30 минут.

Однако это работает только после того, как() прошло мимо знака HY: 30: 00 yyyy-mm-dd, потому что в любое время до его появления NULL... это довольно громоздко, и я не понимаю, почему он выиграл 't просто вычитайте минуты с часами!

Пожалуйста, помогите мне! Я не мог найти какой-либо другой метод выполнения запроса за последние 30 минут, чего я пытаюсь достичь.

С уважением,

Джон

4b9b3361

Ответ 1

SELECT * FROM x WHERE ts BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 30 MINUTE)) AND timestamp(NOW())

Ответ 2

SELECT * FROM x WHERE ts BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW();

Ответ 3

SELECT * FROM x 
WHERE ts BETWEEN TIMESTAMPADD(MINUTE, -30, NOW()) AND NOW();

Ответ 4

Прежде всего вам нужно понять, что timestamp() возвращает временную метку unix в секундах. 3000 секунд - это не 30 минут, это должно быть 1800 секунд. попробуйте

Ответ 5

Для меня работает следующий запрос

select * from x where (now() - ts) < 180000

180000 составляет 30 минут, потому что 6000 мс составляет 1 минуту

Ответ 7

SELECT * FROM (`yourdb`) WHERE `timestamp` BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW();