Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में 5 दिन से पुरानी सभी पंक्तियाँ डिलीट करें

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 रेंज

सावधानी

  • पहले SELECT से प्रभावित पंक्तियाँ जांचें
  • बड़े डिलीट के लिए बैच प्रोसेसिंग करें
  • ट्रांजेक्शन उपयोग करें
  1. - MySQL में किसी तिथि से 30 दिन पुरानी DATE रिकॉर्ड हटाएं

    DELETE में INTERVAL के साथ सापेक्ष तिथि फ़िल्टर एक संदर्भ तिथि से 30 दिन से अधिक पुरानी रिकॉर्ड हटाने के लिए DELETE में WHERE date_column < (reference_date - INTERVAL 30 DAY) का उपयोग करें। सिंटैक्स DELETE FROM yourTableName WHERE yourColumnName < (yourAnotherDateValue - INTERVAL 30 DAY); टेबल और

  1. - MySQL क्वेरी: 14 दिन से अधिक हाल की तिथि प्राप्त करना

    DATE_SUB() और INTERVAL का उपयोग करके हाल की तिथियां फ़िल्टर करना पहले टेबल बनाएं: create table DemoTable1392 ( ArrivalDate date ); Query OK, 0 rows affected (0.43 sec) रिकॉर्ड डालें: insert into DemoTable1392 values(2019-10-11); Query OK, 1 row affected (0.11 sec) सभी रिकॉर्ड देखें: select * from

  1. - MySQL में FROM_UNIXTIME और NOW से 1 दिन से पुराने टाइमस्टैम्प वाली पंक्तियाँ प्राप्त करें

    सिंटैक्स select * from yourTable where from_unixtime(unixTimestampCol) < now() - interval 1 day; उदाहरण: यूनिक्स टाइमस्टैम्प कॉलम insert into demo75 values(unix_timestamp(2020-01-10)), (unix_timestamp(2020-11-19)), (unix_timestamp(2020-12-18)), (unix_timestamp(2020-11-10)); क्वेरी और परिणाम (मान

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
पहलूDATEDIFF()रेंज क्वेरी
इंडेक्स उपयोगनहीं (फ़ंक्शन कॉल)हाँ
पठनीयतास्पष्टस्पष्ट
प्रदर्शनधीमा (बड़ी टेबल)तेज़