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

Truy vấn MySQL lấy các hàng cũ hơn một tuần

Để 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.