Để tìm bản ghi có ngày giờ chính xác bằng ngày hôm nay trừ 7 ngày, dùng DATE() kết hợp CURDATE() - INTERVAL 7 DAY.
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
AdmissionDate datetime
);
Lưu ý: Giả sử ngày hiện tại (CURDATE()) = 2019-08-23.
Chèn dữ liệu:
mysql> insert into DemoTable(AdmissionDate) values('2019-01-23');
mysql> insert into DemoTable(AdmissionDate) values('2019-08-15');
mysql> insert into DemoTable(AdmissionDate) values('2019-08-16');
mysql> insert into DemoTable(AdmissionDate) values('2019-08-24');
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+----+---------------------+ | Id | AdmissionDate | +----+---------------------+ | 1 | 2019-01-23 00:00:00 | | 2 | 2019-08-15 00:00:00 | | 3 | 2019-08-16 00:00:00 | | 4 | 2019-08-24 00:00:00 | +----+---------------------+
Truy vấn lấy bản ghi đúng 7 ngày trước (2019-08-16)
mysql> select * from DemoTable where date(AdmissionDate) = CURDATE() - interval 7 day;
Kết quả:
+----+---------------------+ | Id | AdmissionDate | +----+---------------------+ | 3 | 2019-08-16 00:00:00 | +----+---------------------+
Giải thích:
DATE(AdmissionDate): Trích xuất phần ngày (bỏ giờ/phút/giây)CURDATE(): Ngày hôm nay (2019-08-23)CURDATE() - INTERVAL 7 DAY: 7 ngày trước = 2019-08-16- So sánh bằng (
=) → chỉ lấy bản ghi đúng ngày 2019-08-16
Mở rộng: Để lấy khoảng 7 ngày qua (từ 7 ngày trước đến hôm nay): WHERE DATE(AdmissionDate) BETWEEN CURDATE() - INTERVAL 7 DAY AND CURDATE().