MySQL deyiminde kayıtları (bir tarih damgasıyla)> = NOW () -1 olarak sıralamanın bir yolu var mı, böylece bugünden önceki günden geleceğe kadar tüm kayıtlar seçilir?
MySQL deyiminde kayıtları (bir tarih damgasıyla)> = NOW () -1 olarak sıralamanın bir yolu var mı, böylece bugünden önceki günden geleceğe kadar tüm kayıtlar seçilir?
Yanıtlar:
Tarafından yargılanmak Tarih / saat işlevlerine belgelere gibi bir şey yapabilmelisiniz:
SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
Sonucun beklediğinizden biraz farklı olabileceğini unutmayın.
NOW()
döndürür a DATETIME
.
Ve INTERVAL
adlandırıldığı gibi çalışır, örn INTERVAL 1 DAY = 24 hours
.
Senaryonuz çalışacak şekilde cron'd edilir Yani eğer 03:00
, bu özleyeceğim first three hours of records from the 'oldest' day
.
Bütün gün kullanmak için CURDATE() - INTERVAL 1 DAY
. Bu, komut dosyasının ne zaman çalıştırıldığına bakılmaksızın önceki günün başlangıcına geri dönecektir.
Neredeyse oradasın: bu NOW() - INTERVAL 1 DAY
Tabi ki yapabilirsin:
SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
DATE_ADD
O zaman kafa karıştırıcı -1 day
.
DATE_ADD
Veya kullanarak doğru bir yanıt görmedim DATE_SUB
:
1 günü şundan çıkar: NOW()
...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)
1 gün ekleyin NOW()
...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)
arama alanı zaman damgası olduğunda ve dün 0 saat ve bugün 0 saatten kayıtları bulmak istediğinizde, yapıyı kullanın
MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))
yerine
now() - interval 1 day