2011-12-17 3 views

ответ

145

Судя по documentation for date/time functions, вы должны быть в состоянии сделать что-то вроде:

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

отлично работает, спасибо! – user1092780

+0

как перейти к так далее .. означает текущую дату для всех записей, которые доступны в db. ? это всего лишь на один день, но мне теперь нужно все записывать на словах. @jon –

6

Конечно, вы можете:

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

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

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

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

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

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

+1

Это очень полезное дополнение к принятому ответу, спасибо. –

0

при поиске поле метки времени, и вы хотите найти записи с 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 
Смежные вопросы