Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में YEAR() फ़ंक्शन से DATE कॉलम की तुलना केवल वर्ष (YYYY) से करें

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());

प्रदर्शन विचार

सर्वोत्तम अभ्यास: रेंज क्वेरी के लिए इंडेक्स-अनुकूल रूप

-- YEAR() के बजाय रेंज उपयोग करें
WHERE date_col >= '2023-01-01' AND date_col < '2024-01-01'

-- या DATE() के साथ (MySQL 8.0+ फंक्शनल इंडेक्स के साथ)
WHERE DATE(date_col) BETWEEN '2023-01-01' AND '2023-12-31'

MySQL 8.0+ फंक्शनल इंडेक्स

ALTER TABLE DemoTable1322 
ADD INDEX idx_year_dob ((YEAR(DOB)));

फिर WHERE YEAR(DOB) = 2015 इंडेक्स का उपयोग कर सकता है।

सारांश

  • YEAR() सरल, पठनीय, और तदर्थ क्वेरी के लिए ठीक है
  • बड़े टेबल/उत्पादन क्वेरी के लिए **रेंज तुलना** उपयोग करें
  • MySQL 8.0+ में फंक्शनल इंडेक्स से YEAR() भी तेज़ हो सकता है
  • स्ट्रिंग तुलना '2015' काम करती है क्योंकि MySQL स्वचालित रूप से संख्या में बदल देता है

वर्ष-आधारित फ़िल्टरिंग व्यावसायिक रिपोर्टिंग, आयु गणना, और वार्षिक विश्लेषण में सर्वव्यापी है।

  1. - MySQL में विशिष्ट वर्ष के आधार पर DATE फॉर्मेट स्ट्रिंग से रिकॉर्ड कैसे अपडेट करें?

    MySQL में जब तारीख VARCHAR कॉलम में dd/mm/yyyy फॉर्मेट में स्टोर हो, तो STR_TO_DATE() के साथ YEAR() फंक्शन का उपयोग करके विशिष्ट वर्ष के रिकॉर्ड अपडेट करें। उदाहरण: 2010 में जॉइनिंग वाले यूज़र्स का नाम बदलना डेमो टेबल बनाएं (तारीख VARCHAR में): mysql> CREATE TABLE DemoTable1924 ( UserName

  1. - MySQL में DATE_FORMAT और STR_TO_DATE से 'mm-yyyy' फॉर्मेट में महीना-वर्ष कैसे निकालें?

    MySQL में VARCHAR कॉलम में स्टोर तारीख (जैसे dd-mm-yyyy) से mm-yyyy फॉर्मेट में महीना-वर्ष निकालने के लिए, STR_TO_DATE() से पार्स करें फिर DATE_FORMAT() से फॉर्मेट करें। उदाहरण: ShippingDate से महीना-वर्ष निकालना डेमो टेबल बनाएं (तारीख VARCHAR में): mysql> CREATE TABLE DemoTable1931 (ShippingD

  1. - MySQL में DATE_ADD से तारीख में वर्ष जोड़ें

    UPDATE और DATE_ADD() से मौजूदा तारीखों में अंतराल जोड़ें मौजूदा तारीख कॉलम में वर्ष (या अन्य अंतराल) जोड़ने के लिए UPDATE के साथ DATE_ADD() का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec) mysql> insert into

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
दृष्टिकोणइंडेक्स उपयोगप्रदर्शन
WHERE YEAR(col) = 2023❌ इंडेक्स उपयोग नहीं (फ़ंक्शन कॉल)फुल स्कैन
WHERE col >= '2023-01-01' AND col < '2024-01-01'✅ इंडेक्स उपयोग (रेंज स्कैन)तेज़