mySQL выберите отметку времени (now () -3000);
Я пытаюсь сделать запрос, который возвращает результаты на основе метки времени, скажем, интервал 30 минут.
Итак, я понял, что могу
SELECT * FROM x WHERE ts BETWEEN timestamp(now()-3000) AND timestamp(now())
таким образом, это будет запрашивать все из x с метками времени в столбце ts в течение последних 30 минут.
однако это работает только после того, как now () прошел отметку yyyy-mm-dd HH:30:00, потому что в любое время до этого это приведет к нулю... это довольно громоздко, и я не понимаю, почему это не просто вычти чертовы минуты из часа!
пожалуйста, помогите мне! Я не мог найти другой метод выполнения запроса в течение последних 30 минут, вот чего я пытаюсь достичь.
С уважением,
Джон
7 ответов
SELECT * FROM x WHERE ts BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 30 MINUTE)) AND timestamp(NOW())
прежде всего вам нужно понять, что timestamp() возвращает метку времени unix в секундах. 3000 секунд-это не 30 минут, это должно быть 1800 секунд. попробуйте это
для меня то, что сработало, - это следующий запрос
select * from x where (now() - ts) < 180000
180000 - 30 минут, потому что 6000 МС - 1 минута
вам придется использовать операторы DATE_ADD() и DATE_SUB() для дат. Взгляните на документацию:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html