DATEDIFF() से पुरानी पंक्तियाँ हटाएं
वर्तमान तारीख से 5 दिन से पुरानी पंक्तियाँ हटाने के लिए DATEDIFF() फ़ंक्शन का उपयोग करें।
सिंटैक्स
DELETE FROM yourTableName WHERE DATEDIFF(NOW(), yourDateColumnName) > 5;
उदाहरण: टेबल और डेटा (मान लें आज 2019-03-10 है)
mysql> CREATE TABLE deleteRowsOlderThan5Demo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(100),
-> Post_Date DATE
-> );
mysql> INSERT INTO deleteRowsOlderThan5Demo(Name, Post_Date) VALUES
('Larry', '2019-03-11'), ('Mike', '2019-02-12'), ('Sam', '2019-03-10'),
('Carol', '2019-03-01'), ('David', '2019-01-31'), ('Maxwell', '2019-01-26'), ('John', '2019-02-19');
डिलीट से पहले
+----+---------+------------+ | Id | Name | Post_Date | +----+---------+------------+ | 1 | Larry | 2019-03-11 | | 2 | Mike | 2019-02-12 | | 3 | Sam | 2019-03-10 | | 4 | Carol | 2019-03-01 | | 5 | David | 2019-01-31 | | 6 | Maxwell | 2019-01-26 | | 7 | John | 2019-02-19 | +----+---------+------------+
डिलीट क्वेरी (5 दिन से पुराना = 2019-03-05 से पहले)
mysql> DELETE FROM deleteRowsOlderThan5Demo
-> WHERE DATEDIFF(NOW(), deleteRowsOlderThan5Demo.Post_Date) > 5;
Query OK, 5 rows affected (0.14 sec)
डिलीट के बाद (केवल 2019-03-10 और 2019-03-11 बचे)
+----+-------+------------+ | Id | Name | Post_Date | +----+---------+------------+ | 1 | Larry | 2019-03-11 | | 3 | Sam | 2019-03-10 | +----+-------+------------+
बेहतर प्रदर्शन: रेंज क्वेरी (इंडेक्स उपयोग)
DELETE FROM table WHERE dateColumn < DATE_SUB(CURDATE(), INTERVAL 5 DAY);
DATEDIFF vs रेंज
| पहलू | DATEDIFF() | रेंज क्वेरी |
|---|---|---|
| इंडेक्स उपयोग | नहीं (फ़ंक्शन कॉल) | हाँ |
| पठनीयता | स्पष्ट | स्पष्ट |
| प्रदर्शन | धीमा (बड़ी टेबल) | तेज़ |