Sử dụng hàm DATE() để trích xuất phần ngày từ cột DATETIME/TIMESTAMP, sau đó so sánh.
Cú pháp
SELECT * FROM table_name WHERE DATE(date_column) = 'target_date';
Ví dụ minh họa
Dùng cùng bảng và dữ liệu bài trước:
mysql> SELECT * FROM AllRecordsFromadate WHERE DATE(AdmissionDate) = '2014-12-05';
Kết quả (giống ví dụ BETWEEN):
+------+-------+------+---------------------+ | Id | Name | Age | AdmissionDate | +------+-------+------+---------------------+ | 102 | Carol | 24 | 2014-12-05 12:34:50 | | 103 | Mike | 25 | 2014-12-05 12:30:40 | +------+-------+------+---------------------+
So sánh hai cách tiếp cận
| Tiêu chí | DATE() = 'value' | BETWEEN |
|---|---|---|
| Độ đọc hiểu | Rất rõ ràng, ngắn gọn | Cần chỉ định đầu/cuối ngày |
| Hiệu năng (có index) | Không dùng được index trên cột datetime | Dùng được index nếu viết đúng |
| Phù hợp | Truy vấn ad-hoc, báo cáo | Truy vấn thường xuyên, production |
Cách tối ưu cho production (dùng index)
SELECT * FROM table_name WHERE date_column >= '2014-12-05' AND date_column < '2014-12-06';
Cách này tận dụng index trên cột datetime và tránh hàm DATE().