So sánh chỉ ngày (bỏ qua giờ) trong MySQL
Khi cột kiểu DATETIME hoặc TIMESTAMP chứa cả ngày và giờ, để so sánh chỉ phần ngày bạn dùng hàm DATE().
Cú pháp
SELECT * FROM tenBang WHERE DATE(cotDateTime) = 'yyyy-mm-dd';
Ví dụ minh họa
Tạo bảng ComparingDate:
CREATE TABLE ComparingDate (
Name VARCHAR(100),
Login DATETIME
);
Chèn dữ liệu:
INSERT INTO ComparingDate VALUES
('John', '2014-04-06 22:50:45'),
('Bob', '2018-12-15 15:07:46'),
('Carol', '2016-03-10 21:50:40'),
('David', '1995-08-08 23:40:47');
Truy vấn tìm bản ghi ngày 2016-03-10 (bỏ qua giờ):
SELECT * FROM ComparingDate WHERE DATE(Login) = '2016-03-10';
Kết quả
+-------+---------------------+
| Name | Login |
+-------+---------------------+
| Carol | 2016-03-10 21:50:40 |
+-------+---------------------+
Mẹo: Để tận dụng index, tránh dùng hàm trên cột trong WHERE. Thay vào đó dùng khoảng:
WHERE Login >= '2016-03-10' AND Login < '2016-03-11'
Cách này cho phép MySQL sử dụng index trên cột Login.