การลบบันทึกที่มีวันที่เก่ากว่าวันที่อ้างอิง 30 วัน
ใช้คำสั่ง DELETE ร่วมกับเงื่อนไข WHERE date_col < (ref_date - INTERVAL 30 DAY) เพื่อลบข้อมูลที่เก่ากว่าช่วงเวลาที่กำหนด
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (DueDate DATE);
Query OK, 0 rows affected (0.68 sec)
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');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------------+
| DueDate |
+------------+
| 2019-08-25 |
| 2019-07-01 |
| 2019-06-20 |
| 2019-09-02 |
+------------+
4 rows in set (0.00 sec)
คำสั่งลบวันที่เก่ากว่า 30 วันจาก 2019-08-31
mysql> DELETE FROM DemoTable WHERE DueDate < ('2019-08-31' - INTERVAL 30 DAY);
Query OK, 2 rows affected (0.22 sec)
ตรวจสอบข้อมูลที่เหลือ
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------------+
| DueDate |
+------------+
| 2019-08-25 |
| 2019-09-02 |
+------------+
2 rows in set (0.00 sec)
คำอธิบาย
'2019-08-31' - INTERVAL 30 DAY: คำนวณวันที่ 30 วันก่อน 31 สิงหาคม → 1 สิงหาคมDueDate < '2019-08-01': ลบวันที่เก่ากว่า 1 สิงหาคม (คือ 2019-07-01 และ 2019-06-20)- เหลือ 2019-08-25 และ 2019-09-02
- ใช้ได้กับ DATE, DATETIME, TIMESTAMP
- ระวัง: DELETE ไม่สามารถ Undo ได้ ควร Backup หรือใช้ Transaction