MySQL में DATE या DATETIME कॉलम में संग्रहीत पूरी तारीख (YYYY-MM-DD) की तुलना केवल वर्ष भाग (YYYY) से करने के लिए YEAR() फ़ंक्शन का उपयोग करें। यह वर्ष-आधारित फ़िल्टरिंग, रिपोर्टिंग, और समूहन के लिए मानक दृष्टिकोण है।
सिंटैक्स
SELECT * FROM table_name WHERE YEAR(date_column) = 'target_year';
व्यावहारिक उदाहरण
जन्मतिथि (DOB) टेबल बनाएं:
mysql> CREATE TABLE DemoTable1322 (DOB DATE);
डेटा डालें:
mysql> INSERT INTO DemoTable1322 VALUES('1999-04-12');
mysql> INSERT INTO DemoTable1322 VALUES('2010-12-01');
mysql> INSERT INTO DemoTable1322 VALUES('2015-03-09');
mysql> INSERT INTO DemoTable1322 VALUES('2007-05-24');
डेटा देखें:
mysql> SELECT * FROM DemoTable1322;
+------------+ | DOB | +------------+ | 1999-04-12 | | 2010-12-01 | | 2015-03-09 | | 2007-05-24 | +------------+
वर्ष 2015 के रिकॉर्ड खोजने की क्वेरी
mysql> SELECT * FROM DemoTable1322 WHERE YEAR(DOB) = '2015';
परिणाम
+------------+ | DOB | +------------+ | 2015-03-09 | +------------+
YEAR() फ़ंक्शन विवरण
- इनपुट:
DATE,DATETIME,TIMESTAMP, या वैध तारीख स्ट्रिंग - आउटपुट: 4-अंकीय वर्ष (
1000से9999), याNULLयदि इनपुटNULL YEAR('2024-01-15')→2024
सामान्य उपयोग पैटर्न
वर्ष रेंज (बीच में)
SELECT * FROM employees WHERE YEAR(hire_date) BETWEEN 2010 AND 2020;
वर्ष सूची (IN)
SELECT * FROM orders WHERE YEAR(order_date) IN (2021, 2022, 2023);
वर्ष के अनुसार समूहन और गिनती
SELECT YEAR(DOB) AS BirthYear, COUNT(*) AS Count FROM DemoTable1322 GROUP BY YEAR(DOB) ORDER BY BirthYear;
वर्तमान वर्ष के साथ तुलना
SELECT * FROM users WHERE YEAR(created_at) = YEAR(CURDATE());
प्रदर्शन विचार
| दृष्टिकोण | इंडेक्स उपयोग | प्रदर्शन |
|---|---|---|
WHERE YEAR(col) = 2023 | ❌ इंडेक्स उपयोग नहीं (फ़ंक्शन कॉल) | फुल स्कैन |
WHERE col >= '2023-01-01' AND col < '2024-01-01' | ✅ इंडेक्स उपयोग (रेंज स्कैन) | तेज़ |