Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy vấn MySQL chọn bản ghi theo ngày cụ thể (bỏ qua giờ)


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().