NEVER EVER sử dụng một selector như DATE(datecolumns) = '2012-12-24'
- đó là một kẻ giết người thực hiện:
- nó sẽ tính toán
DATE()
cho tất cả các hàng, kể cả những người, không phù hợp với
- nó sẽ làm cho nó không thể sử dụng một chỉ số cho truy vấn
Nó được nhanh hơn nhiều để sử dụng
SELECT * FROM tablename
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
vì điều này sẽ cho phép sử dụng chỉ mục mà không cần tính toán.
EDIT
Như đã chỉ ra bởi Used_By_Already, trong thời gian kể từ khi câu trả lời inital vào năm 2012, đã có xuất hiện các phiên bản của MySQL, nơi sử dụng '23: 59: 59' như một kết thúc ngày không còn an toàn. Phiên bản cập nhật phải đọc
SELECT * FROM tablename
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
Ý chính của câu trả lời, tức là tránh bộ chọn trên biểu thức được tính toán, tất nhiên vẫn là viết tắt.
Nguồn
2012-12-31 17:24:07
Xem câu trả lời của John Woo tại http://stackoverflow.com/questions/14769026/mysql-select-where-timestamp-today – ekerner