INTERVAL और BETWEEN से रिलेटिव डेट रेंज क्वेरी
वर्तमान तारीख से 90 दिन पहले से लेकर आज तक की डेट वाले रिकॉर्ड खोजने के लिए INTERVAL के साथ BETWEEN का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable (DueDate DATE);
INSERT INTO DemoTable VALUES('2019-07-10');
INSERT INTO DemoTable VALUES('2019-09-02');
INSERT INTO DemoTable VALUES('2019-06-01');
INSERT INTO DemoTable VALUES('2019-05-10');
INSERT INTO DemoTable VALUES('2019-08-21');
मौजूदा डेटा
+------------+ | DueDate | +------------+ | 2019-07-10 | | 2019-09-02 | | 2019-06-01 | | 2019-05-10 | | 2019-08-21 | +------------+
क्वेरी: 90 दिन पहले से अब तक
SELECT * FROM DemoTable WHERE DueDate BETWEEN NOW() - INTERVAL 90 DAY AND NOW();
आउटपुट (मान लें आज 2019-10-08 है)
+------------+ | DueDate | +------------+ | 2019-07-10 | | 2019-08-21 | +------------+
कैसे काम करता है
NOW()- वर्तमान डेट और समयINTERVAL 90 DAY- 90 दिन का अंतरालNOW() - INTERVAL 90 DAY- 90 दिन पहले की डेट (2019-07-10)BETWEEN ... AND ...- दोनों सिरे शामिल (इन्क्लूसिव)
बेहतर परफॉरमेंस के लिए (SARGable)
SELECT * FROM DemoTable WHERE DueDate >= DATE_SUB(CURDATE(), INTERVAL 90 DAY) AND DueDate <= CURDATE();
यह इंडेक्स का बेहतर उपयोग करता है क्योंकि कॉलम पर कोई फंक्शन नहीं लगा है।
अन्य INTERVAL उदाहरण
INTERVAL 7 DAY- 7 दिन (1 सप्ताह)INTERVAL 1 MONTH- 1 महीनाINTERVAL 3 MONTH- 3 महीनेINTERVAL 1 YEAR- 1 सालINTERVAL 2 HOUR- 2 घंटे (DATETIME के लिए)
डेटाटाइम कॉलम के लिए
WHERE DateTimeCol >= NOW() - INTERVAL 90 DAY AND DateTimeCol <= NOW()