MONTH() और YEAR() फंक्शन्स के साथ डेट फ़िल्टरिंग
विशिष्ट महीने और वर्ष के रिकॉर्ड्स चुनने के लिए MONTH() और YEAR() फंक्शन्स का उपयोग WHERE क्लॉज में करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
StudentName VARCHAR(40),
StudentAdmissionDate DATE
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('Chris', '2019-01-21');
mysql> INSERT INTO DemoTable VALUES ('Robert', '2018-09-05');
mysql> INSERT INTO DemoTable VALUES ('Mike', '2019-09-05');
mysql> INSERT INTO DemoTable VALUES ('David', '2019-10-04');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------------+----------------------+ | StudentName | StudentAdmissionDate | +-------------+----------------------+ | Chris | 2019-01-21 | | Robert | 2018-09-05 | | Mike | 2019-09-05 | | David | 2019-10-04 | +-------------+----------------------+
सितंबर 2019 (महीना 09, वर्ष 2019) के रिकॉर्ड्स चुनने के लिए क्वेरी:
mysql> SELECT * FROM DemoTable
WHERE MONTH(StudentAdmissionDate) = 09
AND YEAR(StudentAdmissionDate) = 2019;
आउटपुट:
+-------------+----------------------+ | StudentName | StudentAdmissionDate | +-------------+----------------------+ | Mike | 2019-09-05 | +-------------+----------------------+
व्याख्या:
- MONTH(date): डेट से महीना (1-12) निकालता है
- YEAR(date): डेट से 4-अंकीय वर्ष निकालता है
- दोनों शर्तें AND से जुड़ी हैं, इसलिए दोनों पूरी होनी चाहिए
- केवल Mike का प्रवेश सितंबर 2019 में है
प्रदर्शन विचार: डेट कॉलम पर फंक्शन (MONTH, YEAR) इंडेक्स उपयोग को रोकते हैं। बड़े टेबल्स के लिए रेंज क्वेरी बेहतर है:
WHERE StudentAdmissionDate >= '2019-09-01' AND StudentAdmissionDate < '2019-10-01'
यह इंडेक्स का उपयोग कर सकता है और अधिक कुशल है।
अन्य उपयोगी डेट फंक्शन्स:
DAY(date)- महीने का दिन (1-31)QUARTER(date)- तिमाही (1-4)WEEK(date)- वर्ष का सप्ताह (0-53)DAYOFWEEK(date)- सप्ताह का दिन (1=रविवार)