Выберите записи отныне () -1 день


есть ли способ в инструкции MySQL упорядочить записи (через штамп даты) по >= NOW () -1, чтобы все записи со дня до сегодняшнего дня в будущее были выбраны?

6 87

6 ответов:

судя по документация для функций даты/времени, вы должны быть в состоянии сделать что-то вроде:

SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY

имейте в виду, что результат может немного отличаться от ожидаемого.

NOW() возвращает a DATETIME.

и INTERVAL работает как по имени, например,INTERVAL 1 DAY = 24 hours.

так что если ваш скрипт cron'D для запуска в 03:00, он упустит first three hours of records from the 'oldest' day.

чтобы получить весь день использования CURDATE() - INTERVAL 1 DAY. Это будет вернуться к началу предыдущего дня, независимо от того, когда скрипт запущен.

вы почти там: это NOW() - INTERVAL 1 DAY

конечно, можно:

SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)

когда поле поиска является меткой времени, и вы хотите найти записи от 0 часов вчера и 0 часов сегодня использовать строительство

MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))  

вместо

 now() - interval 1 day

не видел никаких ответов правильно с помощью DATE_ADD или DATE_SUB:

вычесть 1 день из NOW()

...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)

добавить 1 день из NOW()

...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)