2011-12-17 50 views

Trả lời

145

Đánh giá bởi documentation for date/time functions, bạn sẽ có thể làm điều gì đó như:

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

trình một cách hoàn hảo, cảm ơn! – user1092780

+0

làm thế nào để có được bây giờ vv .. có nghĩa là ngày hiện tại cho tất cả các hồ sơ có sẵn trong db. ? đây chỉ là một ngày nhưng tôi cần tất cả các bản ghi bây giờ để trên các từ. @jon –

6

Chắc chắn bạn có thể:

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

Hãy nhận biết kết quả có thể hơi khác so với mong đợi.

NOW() trả về một DATETIME.

INTERVAL hoạt động như được đặt tên, ví dụ: INTERVAL 1 DAY = 24 hours.

Vì vậy, nếu tập lệnh của bạn là cron'd để chạy tại 03:00, nó sẽ bỏ lỡ first three hours of records from the 'oldest' day.

Để sử dụng cả ngày CURDATE() - INTERVAL 1 DAY. Điều này sẽ quay lại đầu ngày hôm trước bất kể khi nào tập lệnh được chạy.

+1

Đó là một bổ sung rất hữu ích cho câu trả lời được chấp nhận, cảm ơn. –

0

khi lĩnh vực tìm kiếm là dấu thời gian và bạn muốn tìm các bản ghi từ 0 giờ ngày hôm qua và 0 giờ xây dựng hiện nay sử dụng

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

thay

now() - interval 1 day 
Các vấn đề liên quan