Có cách nào trong câu lệnh MySQL để sắp xếp các bản ghi (thông qua dấu ngày) bằng cách> = NOW () -1 để tất cả các bản ghi từ ngày trước hôm nay đến tương lai được chọn không?
Có cách nào trong câu lệnh MySQL để sắp xếp các bản ghi (thông qua dấu ngày) bằng cách> = NOW () -1 để tất cả các bản ghi từ ngày trước hôm nay đến tương lai được chọn không?
Câu trả lời:
Đánh giá theo tài liệu về các chức năng ngày / giờ , bạn sẽ có thể làm một cái gì đó như:
SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
Hãy lưu ý rằng kết quả có thể hơi khác so với bạn mong đợi.
NOW()
trả về a DATETIME
.
Và 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 được chạy theo 03:00
, nó sẽ bỏ lỡ first three hours of records from the 'oldest' day
.
Để có được cả ngày sử dụng CURDATE() - INTERVAL 1 DAY
. Điều này sẽ trở lại từ đầu ngày hôm trước bất kể khi nào kịch bản được chạy.
Bạn sắp đến rồi: nó NOW() - INTERVAL 1 DAY
Chắc chắn bạn có thể:
SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
DATE_ADD
rồi -1 day
.
Không thấy bất kỳ câu trả lời chính xác bằng cách sử dụng DATE_ADD
hoặc DATE_SUB
:
Trừ đi 1 ngày từ NOW()
...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)
Thêm 1 ngày từ NOW()
...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)
khi trường tìm kiếm là dấu thời gian và bạn muốn tìm bản ghi từ 0 giờ hôm qua và 0 giờ hôm nay sử dụng xây dựng
MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))
thay thế
now() - interval 1 day