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

Xóa bản ghi DATE cũ hơn 30 ngày so với một ngày tham chiếu trong MySQL

Để xóa các bản ghi có ngày (DATE) cũ hơn 30 ngày so với một ngày tham chiếu cố định, dùng DELETE ... WHERE date_col < (ref_date - INTERVAL 30 DAY).

Ví dụ minh họa

Tạo bảng:

mysql> create table DemoTable ( 
    DueDate date 
);

Chèn dữ liệu:

mysql> insert into DemoTable values('2019-08-25');
mysql> insert into DemoTable values('2019-07-01');
mysql> insert into DemoTable values('2019-06-20');
mysql> insert into DemoTable values('2019-09-02');

Hiển thị dữ liệu:

mysql> select * from DemoTable;

Kết quả:

+------------+
| DueDate    |
+------------+
| 2019-08-25 |
| 2019-07-01 |
| 2019-06-20 |
| 2019-09-02 |
+------------+

Xóa ngày < (2019-08-31 - 30 ngày = 2019-08-01)

mysql> delete from DemoTable where DueDate < ('2019-08-31' - INTERVAL 30 DAY);

Kết quả: Query OK, 2 rows affected

Kiểm tra lại:

mysql> select * from DemoTable;

Kết quả (còn lại 2 bản ghi ≥ 2019-08-01):

+------------+
| DueDate    |
+------------+
| 2019-08-25 |
| 2019-09-02 |
+------------+

Giải thích:

  • '2019-08-31' - INTERVAL 30 DAY = 2019-08-01
  • DueDate < '2019-08-01': Xóa ngày 2019-07-01 và 2019-06-20
  • 2019-08-25 và 2019-09-02 ≥ 2019-08-01 → giữ lại

Ứng dụng thực tế: Thay ngày cố định '2019-08-31' bằng CURDATE() để xóa dữ liệu cũ hơn 30 ngày so với hôm nay (cron job dọn dẹp): DELETE FROM DemoTable WHERE DueDate < (CURDATE() - INTERVAL 30 DAY).