दो डेट कॉलम (शुरुआत, अंत) वाली टेबल से किसी विशिष्ट वर्ष में आने वाली पंक्तियाँ प्राप्त करने के लिए YEAR() फ़ंक्शन का उपयोग करें।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1843 (
StartDate DATE,
EndDate DATE
);
डेटा डालें
mysql> INSERT INTO DemoTable1843 VALUES('2019-01-21', '2019-10-12');
mysql> INSERT INTO DemoTable1843 VALUES('2018-10-12', '2018-12-31');
mysql> INSERT INTO DemoTable1843 VALUES('2016-04-01', '2017-05-02');
वर्ष 2018 की पंक्तियाँ प्राप्त करें
mysql> SELECT * FROM DemoTable1843
WHERE YEAR(StartDate) = '2018'
OR YEAR(EndDate) = '2018';
आउटपुट:
+------------+------------+ | StartDate | EndDate | +------------+------------+ | 2018-10-12 | 2018-12-31 | +------------+------------+
व्याख्या
YEAR(StartDate) = 2018→ शुरुआत 2018 में है।YEAR(EndDate) = 2018→ अंत 2018 में है।OR→ दोनों में से कोई भी शर्त पूरी होने पर पंक्ति चुनें।
बेहतर प्रदर्शन: रेंज क्वेरी
YEAR() फ़ंक्शन इंडेक्स उपयोग को रोकता है। तेज़ क्वेरी:
mysql> SELECT * FROM DemoTable1843
WHERE StartDate < '2019-01-01'
AND EndDate >= '2018-01-01';
अन्य उपयोगी पैटर्न
- वर्ष की पहली तारीख:
STR_TO_DATE(CONCAT(year, '-01-01'), '%Y-%m-%d') - वर्ष की अंतिम तारीख:
LAST_DAY(STR_TO_DATE(CONCAT(year, '-12-01'), '%Y-%m-%d')) - वर्ष के बीच ओवरलैप जांच:
StartDate <= year_end AND EndDate >= year_start