Cú pháp chuẩn
SELECT * FROM bang WHERE DATE(cot_datetime) = DATE(NOW() - INTERVAL 1 DAY);
Giải thích
DATE(cot): Lấy phần ngày, bỏ giờNOW() - INTERVAL 1 DAY: Thời điểm 24h trướcDATE(...)ngoài: Chỉ so sánh phần ngày
Ví dụ thực tế
Dữ liệu (giả sử hôm nay 2019-02-27)
+----+---------------------+ | Id | ArrivalDateTime | +----+---------------------+ | 1 | 2014-11-09 13:45:21 | | 2 | 2017-10-19 11:41:31 | | 3 | 2019-02-25 10:40:45 | | 4 | 2019-02-26 12:06:07 | -- Hôm qua | 5 | 2019-02-25 12:06:47 | | 6 | 2019-02-27 11:45:49 | -- Hôm nay +----+---------------------+
Truy vấn
mysql> SELECT * FROM yesterDayRecordsDemo
-> WHERE DATE(ArrivalDateTime) = DATE(NOW() - INTERVAL 1 DAY);
Kết quả
+----+---------------------+ | Id | ArrivalDateTime | +----+---------------------+ | 4 | 2019-02-26 12:06:07 | +----+---------------------+
Các biến thể
- 3 ngày trước:
INTERVAL 3 DAY - Tuần trước:
INTERVAL 1 WEEK - Tháng trước:
INTERVAL 1 MONTH - Mốc cố định:
WHERE DATE(cot) = '2019-02-26'
Mẹo tối ưu: Tránh dùng function trên cột trong WHERE nếu có index. Thay vào đó:
WHERE cot >= '2019-02-26' AND cot < '2019-02-27'