Để lọc các bản ghi có ngày cũ hơn 7 ngày so với ngày hiện tại, dùng hàm DATEDIFF() kết hợp NOW() hoặc CURDATE().
Ví dụ minh họa
Giả sử ngày hiện tại: 2019-06-09 19:15:56.
Tạo bảng:
mysql> CREATE TABLE DemoTable (
ShippingDate DATETIME
);
Chèn dữ liệu:
mysql> INSERT INTO DemoTable VALUES('2019-06-01');
mysql> INSERT INTO DemoTable VALUES('2019-06-02');
mysql> INSERT INTO DemoTable VALUES('2019-06-14');
mysql> INSERT INTO DemoTable VALUES('2019-05-21');
Xem dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả
+---------------------+ | ShippingDate | +---------------------+ | 2019-06-01 00:00:00 | | 2019-06-02 00:00:00 | | 2019-06-14 00:00:00 | | 2019-05-21 00:00:00 | +---------------------+
Truy vấn: Lấy các hàng có ShippingDate cũ hơn 7 ngày (trước 2019-06-02):
mysql> SELECT * FROM DemoTable
-> WHERE DATEDIFF(NOW(), ShippingDate) > 7;
Kết quả
+---------------------+ | ShippingDate | +---------------------+ | 2019-06-01 00:00:00 | | 2019-05-21 00:00:00 | +---------------------+
Mẹo hiệu năng: Tránh dùng hàm trên cột trong WHERE nếu cột có chỉ mục. Thay vào đó: WHERE ShippingDate < DATE_SUB(NOW(), INTERVAL 7 DAY) để tận dụng index.