MySQL तारीख/समय फंक्शन: टाइमस्टैम्प के भागों द्वारा फ़िल्टर करना
MySQL में YEAR(), MONTH(), DAY(), HOUR(), आदि फंक्शन का उपयोग करके TIMESTAMP, DATETIME, या DATE कॉलम के विशिष्ट भागों के आधार पर फ़िल्टर कर सकते हैं।
उदाहरण: वर्ष 2017 के रिकॉर्ड चुनें
टेबल बनाएं:
CREATE TABLE DemoTable (AdmissionDate TIMESTAMP);
INSERT INTO DemoTable VALUES ('2007-01-10'), ('2015-07-12'), ('2017-11-01'), ('2019-08-29');
डेटा:
+---------------------+ | AdmissionDate | +---------------------+ | 2007-01-10 00:00:00 | | 2015-07-12 00:00:00 | | 2017-11-01 00:00:00 | | 2019-08-29 00:00:00 | +---------------------+
वर्ष के आधार पर फ़िल्टर
SELECT * FROM DemoTable WHERE YEAR(AdmissionDate) = '2017';
परिणाम:
+---------------------+ | AdmissionDate | +---------------------+ | 2017-11-01 00:00:00 | +---------------------+
अन्य तारीख भाग फंक्शन
| फंक्शन | लौटाता है | उदाहरण |
|---|---|---|
| YEAR(date) | वर्ष (4 अंक) | 2017 |
| MONTH(date) | महीना (1-12) | 11 |
| DAY(date) / DAYOFMONTH() | दिन (1-31) | 1 |
| HOUR(datetime) | घंटा (0-23) | 14 |
| MINUTE(datetime) | मिनट (0-59) | 30 |
| SECOND(datetime) | सेकंड (0-59) | 45 |
| DAYOFWEEK(date) | सप्ताह का दिन (1=रविवार) | 4 |
| QUARTER(date) | तिमाही (1-4) | 4 |
रेंज क्वेरी के लिए बेहतर: सीधी तुलना
YEAR() फंक्शन इंडेक्स उपयोग को रोक सकता है। रेंज के लिए सीधी तुलना बेहतर:
CREATE INDEX idx_year ON DemoTable ((YEAR(AdmissionDate)));
फिर WHERE YEAR(AdmissionDate) = 2017 इंडेक्स उपयोग कर सकता है।