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

MySQL में वर्तमान डेट से पुरानी पंक्तियों का चयन करना

NOW() के साथ तुलना

वर्तमान डेट/समय से पुराने रिकॉर्ड्स खोजने के लिए NOW() फंक्शन के साथ तुलना ऑपरेटर (<, <=) का उपयोग करें।

उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना

mysql> CREATE TABLE DemoTable840(DueDate DATETIME);
Query OK, 0 rows affected (0.66 sec)

रिकॉर्ड्स इन्सर्ट करना (मान लें वर्तमान डेट 2019-08-03 है)

mysql> INSERT INTO DemoTable840 VALUES
    ('2019-08-09'),('2019-07-05'),('2019-08-10'),('2019-07-13');
Query OK, 4 rows affected (...)

सभी रिकॉर्ड्स देखना

mysql> SELECT * FROM DemoTable840;
+-----------------------+
| DueDate               |
+-----------------------+
| 2019-08-09 00:00:00   |
| 2019-07-05 00:00:00   |
| 2019-08-10 00:00:00   |
| 2019-07-13 00:00:00   |
+-----------------------+
4 rows in set (0.00 sec)

वर्तमान डेट से पुराने रिकॉर्ड्स की क्वेरी

mysql> SELECT * FROM DemoTable840 WHERE DueDate < NOW();

परिणाम (वर्तमान डेट 2019-08-03 मानकर)

+-----------------------+
| DueDate               |
+-----------------------+
| 2019-07-05 00:00:00   |
| 2019-07-13 00:00:00   |
+-----------------------+
2 rows in set (0.00 sec)

विविधताएं

केवल डेट भाग की तुलना (समय अनदेखा)

SELECT * FROM DemoTable840 WHERE DATE(DueDate) < CURDATE();

वर्तमान डेट पर या उससे पहले (समावेशी)

SELECT * FROM DemoTable840 WHERE DueDate <= NOW();

निर्दिष्ट डेट से पुराने (हार्डकोडेड)

SELECT * FROM DemoTable840 WHERE DueDate < '2019-08-03';

इंटरवल के साथ (उदाहरण: 7 दिन से पुराने)

SELECT * FROM DemoTable840 WHERE DueDate < DATE_SUB(NOW(), INTERVAL 7 DAY);

NOW() vs CURDATE() vs CURRENT_TIMESTAMP

फंक्शनलौटाता हैउपयोग
NOW()डेट + समय (YYYY-MM-DD HH:MM:SS)डेटटाइम तुलना
CURDATE()केवल डेट (YYYY-MM-DD)डेट-ओनली तुलना
CURRENT_TIMESTAMPNOW() के समानमानक SQL
UTC_TIMESTAMP()UTC में डेट+समयटाइमजोन-स्वतंत्र

प्रदर्शन टिप

WHERE DueDate < NOW() इंडेक्स का उपयोग कर सकता है।

बचें: WHERE DATE(DueDate) < CURDATE() - फंक्शन कॉल इंडेक्स उपयोग रोकता है।

बेहतर: WHERE DueDate < CURDATE() (डेटटाइम की तुलना डेट से - MySQL स्वतः कास्ट करता है)।

सामान्य उपयोग के मामले

  • अतिदेय कार्य/भुगतान ढूंढना
  • समाप्त हो चुके सब्सक्रिप्शन/टोकन
  • पिछले इवेंट्स/अपॉइंटमेंट्स
  • पुराने लॉग एंट्रीज आर्काइव करना
  1. - MySQL में NOW() से वर्तमान दिनांक से पहले की तिथि वाले रिकॉर्ड चुनें

    WHERE date_column < NOW() या CURDATE() का उपयोग करके वर्तमान दिनांक/समय से पहले की तिथि वाले रिकॉर्ड चुनें। टेबल बनाएं mysql> CREATE TABLE DemoTable1877 (DueDate DATETIME); डेटा डालें mysql> INSERT INTO DemoTable1877 VALUES(2019-12-10), (2019-12-05), (2019-12-07), (2019-12-09); वर्तमान दिना

  1. - MySQL में DATE_ADD से वर्तमान तारीख में 11 दिन जोड़ें

    WHERE CURDATE() और DATE_ADD से आज की तारीख में अंतराल जोड़ें आज की तारीख वाली पंक्तियों के लिए 11 दिन आगे की तारीख गणना करने के लिए DATE_ADD के साथ WHERE CURDATE() का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1994 ( ArrivalDate date ); Query OK, 0 rows affected (5.33 sec)

  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)); क्वेरी और परिणाम (मान