การเตรียมข้อมูล
mysql> CREATE TABLE DemoTable1851 (DueDate DATETIME);
mysql> INSERT INTO DemoTable1851 VALUES('2019-12-03 21:30:35');
mysql> INSERT INTO DemoTable1851 VALUES('2019-12-03 21:45:00');
mysql> INSERT INTO DemoTable1851 VALUES('2019-12-03 21:34:00');
เวลาปัจจุบัน
mysql> SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2019-12-03 21:38:46 |
+---------------------+
ลบข้อมูลเก่ากว่า 5 นาที
mysql> DELETE FROM DemoTable1851
WHERE DueDate < (NOW() - INTERVAL 5 MINUTE);
Query OK, 2 rows affected
ผลลัพธ์ (เหลือแค่ 21:45 ที่ยังไม่เก่า 5 นาที)
mysql> SELECT * FROM DemoTable1851;
+---------------------+
| DueDate |
+---------------------+
| 2019-12-03 21:45:00 |
+---------------------+
การคำนวณเวลา
| DueDate | Diff จาก NOW | เก่า > 5 นาที? |
|---|---|---|
| 21:30:35 | 8 นาที 11 วินาที | ใช่ → ลบ |
| 21:34:00 | 4 นาที 46 วินาที | ไม่ → คงไว้ |
| 21:45:00 | -6 นาที (อนาคต) | ไม่ → คงไว้ |
รูปแบบอื่นของ INTERVAL
-- 1 ชั่วโมง
WHERE DueDate < NOW() - INTERVAL 1 HOUR
-- 1 วัน
WHERE DueDate < NOW() - INTERVAL 1 DAY
-- 30 วัน
WHERE DueDate < NOW() - INTERVAL 30 DAY
-- รวมได้
WHERE DueDate < NOW() - INTERVAL 1 DAY 5 HOUR
ประสิทธิภาพ: ใช้ Index ได้
รูปแบบ DueDate < NOW() - INTERVAL ... เป็น SARGable สามารถใช้ Index บน DueDate ได้