2012-10-22 35 views
5

Tôi có một bảng có tên là "hành động" với cột DATETIME được gọi là "đã xảy ra". Tôi đang cố gắng trả lại hồ sơ cho ngày hôm nay bằng cách thực hiện theo các bước sauMySQL Trả về Bản ghi Hôm nay Sử dụng DATE từ DATETIME Trường

SELECT * FROM `actions` WHERE `occurred` = DATE(NOW()); 

Nhưng tôi nhận được tập hợp kết quả trống. Nếu tôi lấy mệnh đề WHERE, tôi có thể thấy tất cả 295 hàng trong bảng và có ít nhất 30 hàng từ hôm nay. Sau đó tôi sẽ viết một truy vấn khác để trả về tất cả các bản ghi giữa ngày hôm nay và số lượng X ngày trong quá khứ nhưng trước khi tôi có thể đạt được điều đó, tôi cần phải biết tại sao truy vấn này trả về một tập kết quả trống.

Xin cảm ơn trước.

Trả lời

4

Nếu có trong không có ngày tương lai trong occurred, bạn chỉ có thể sử dụng dưới đây:

SELECT * FROM `actions` WHERE `occurred` > DATE_SUB(CURDATE(), INTERVAL 1 DAY); 
+0

Điều này rất hữu ích. Sẽ không có dữ liệu trong tương lai. Nó sẽ được nghiêm chỉnh để so sánh NOW chống lại các mục lịch sử. Cảm ơn đã phản ứng nhanh chóng! – rws907

7
SELECT * FROM actions WHERE DATE(ocurred) = CURDATE(); 

DATE(ocurred) bỏ qua việc bán thời gian.

Đây là câu lệnh SQL Fiddle để chơi với dữ liệu: http://www.sqlfiddle.com/#!2/81708/2

Các vấn đề liên quan