Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ลบข้อมูลที่เก่ากว่า 30 วันใน MySQL

ใช้ DELETE WHERE date_column < NOW() - INTERVAL 30 DAY

สร้างตารางตัวอย่าง

mysql> CREATE TABLE DemoTable (
    -> UserMessage TEXT,
    -> UserMessageSentDate DATE
    -> );

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO DemoTable VALUES('Hi', '2019-06-01');
mysql> INSERT INTO DemoTable VALUES('Hello', '2019-07-02');
mysql> INSERT INTO DemoTable VALUES('Awesome', '2019-05-04');
mysql> INSERT INTO DemoTable VALUES('Good', '2019-01-10');

แสดงข้อมูล

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-------------+---------------------+
| UserMessage | UserMessageSentDate |
+-------------+---------------------+
| Hi          | 2019-06-01          |
| Hello       | 2019-07-02          |
| Awesome     | 2019-05-04          |
| Good        | 2019-01-10          |
+-------------+---------------------+

คำสั่งลบข้อมูลเก่ากว่า 30 วัน (จากวันนี้)

mysql> DELETE FROM DemoTable WHERE UserMessageSentDate < NOW() - INTERVAL 30 DAY;

ตรวจสอบข้อมูลที่เหลือ

mysql> SELECT * FROM DemoTable;

ผลลัพธ์ (เหลือแค่ Hello วันที่ 2019-07-02):

+-------------+---------------------+
| UserMessage | UserMessageSentDate |
+-------------+---------------------+
| Hello       | 2019-07-02          |
+-------------+---------------------+

คำเตือน: ใช้ NOW() สำหรับ DATETIME, CURDATE() สำหรับ DATE ให้ตรงชนิดข้อมูล และทดสอบด้วย SELECT ก่อน DELETE จริง