DATE() फंक्शन से टाइमस्टैप तुलना
MySQL में TIMESTAMP कॉलम की तुलना केवल तारीख भाग के आधार पर करने के लिए DATE() फंक्शन का उपयोग करें।
उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE comparingTimestampDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> AdmissionDate TIMESTAMP
-> );
डेटा इन्सर्ट करें:
mysql> INSERT INTO comparingTimestampDemo(AdmissionDate) VALUES('2019-03-31');
mysql> INSERT INTO comparingTimestampDemo(AdmissionDate) VALUES('2019-04-10');
mysql> INSERT INTO comparingTimestampDemo(AdmissionDate) VALUES('2019-04-15');
mysql> INSERT INTO comparingTimestampDemo(AdmissionDate) VALUES('2019-03-29');
mysql> INSERT INTO comparingTimestampDemo(AdmissionDate) VALUES('2019-04-07');
सभी रिकॉर्ड (समय 00:00:00 दिखाता है):
+----+---------------------+ | Id | AdmissionDate | +----+---------------------+ | 1 | 2019-03-31 00:00:00 | | 2 | 2019-04-10 00:00:00 | | 3 | 2019-04-15 00:00:00 | | 4 | 2019-03-29 00:00:00 | | 5 | 2019-04-07 00:00:00 | +----+---------------------+
3 दिन पुराने रिकॉर्ड खोजने की क्वेरी
mysql> SELECT DATE(`AdmissionDate`) FROM comparingTimestampDemo
-> WHERE DATE(`AdmissionDate`) < CURDATE() - INTERVAL 3 DAY;
परिणाम (मान लें आज 2019-04-11 है):
+-----------------------+ | DATE(`AdmissionDate`) | +-----------------------+ | 2019-03-31 | | 2019-03-29 | +-----------------------+
कैसे काम करता है:
DATE(AdmissionDate)- टाइमस्टैप से केवल तारीख भाग निकालता हैCURDATE()- वर्तमान तारीख देता हैINTERVAL 3 DAY- 3 दिन घटाता है- तुलना केवल तारीखों के बीच होती है, समय नजरअंदाज होता है
अन्य उपयोगी तुलना पैटर्न
-- आज के रिकॉर्ड WHERE DATE(AdmissionDate) = CURDATE() -- इस हफ्ते के रिकॉर्ड WHERE DATE(AdmissionDate) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) -- विशिष्ट महीने के रिकॉर्ड WHERE DATE(AdmissionDate) BETWEEN '2019-04-01' AND '2019-04-30' -- समय भाग की तुलना के लिए WHERE TIME(AdmissionDate) > '12:00:00'
प्रदर्शन टिप: DATE() फंक्शन इंडेक्स उपयोग को रोक सकता है। बेहतर: WHERE AdmissionDate < '2019-04-08' AND AdmissionDate >= '2019-04-08' - INTERVAL 3 DAY