Есть ли способ в инструкции MySQL упорядочить записи (через штамп даты) с помощью >= NOW() -1, чтобы были выбраны все записи за день до сегодняшнего дня в будущее?
Выберите записи из СЕЙЧАС() -1 Дней
Ответ 1
Судя по документации для функций даты и времени, вы должны сделать что-то вроде:
SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
Ответ 2
Помните, что результат может несколько отличаться от ожидаемого.
NOW()
возвращает a DATETIME
.
И INTERVAL
работает как указано, например. INTERVAL 1 DAY = 24 hours
.
Итак, если ваш script работает cron'd для 03:00
, он пропустит first three hours of records from the 'oldest' day
.
Чтобы весь день использовать CURDATE() - INTERVAL 1 DAY
. Это вернется к началу предыдущего дня независимо от того, когда выполняется script.
Ответ 3
Вы почти там: it NOW() - INTERVAL 1 DAY
Ответ 4
Конечно, вы можете:
SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
Ответ 5
когда поле поиска является меткой времени, и вы хотите найти записи с 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