DELETE में INTERVAL के साथ सापेक्ष तिथि फ़िल्टर
एक संदर्भ तिथि से 30 दिन से अधिक पुरानी रिकॉर्ड हटाने के लिए DELETE में WHERE date_column < (reference_date - INTERVAL 30 DAY) का उपयोग करें।
सिंटैक्स
DELETE FROM yourTableName WHERE yourColumnName < (yourAnotherDateValue - 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');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('2019-07-01');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('2019-06-20');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('2019-09-02');
Query OK, 1 row affected (0.14 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+------------+ | DueDate | +------------+ | 2019-08-25 | | 2019-07-01 | | 2019-06-20 | | 2019-09-02 | +------------+ 4 rows in set (0.00 sec)
2019-08-31 से 30 दिन पहले (2019-08-01) से पुरानी रिकॉर्ड हटाना
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' - 30 दिन = '2019-08-01'। इससे पुरानी तिथियां: '2019-07-01' और '2019-06-20' हटा दी गईं। '2019-08-25' और '2019-09-02' बनी रहीं।
सापेक्ष संदर्भ तिथि के लिए: WHERE DueDate < (CURDATE() - INTERVAL 30 DAY) वर्तमान तिथि से 30 दिन पुरानी रिकॉर्ड हटाता है।