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_TIMESTAMP | NOW() के समान | मानक SQL |
UTC_TIMESTAMP() | UTC में डेट+समय | टाइमजोन-स्वतंत्र |
प्रदर्शन टिप
WHERE DueDate < NOW() इंडेक्स का उपयोग कर सकता है।
बचें: WHERE DATE(DueDate) < CURDATE() - फंक्शन कॉल इंडेक्स उपयोग रोकता है।
बेहतर: WHERE DueDate < CURDATE() (डेटटाइम की तुलना डेट से - MySQL स्वतः कास्ट करता है)।
सामान्य उपयोग के मामले
- अतिदेय कार्य/भुगतान ढूंढना
- समाप्त हो चुके सब्सक्रिप्शन/टोकन
- पिछले इवेंट्स/अपॉइंटमेंट्स
- पुराने लॉग एंट्रीज आर्काइव करना