MySQL में VARCHAR कॉलम में स्टोर तारीख (जैसे 'dd-mm-yyyy') से 'mm-yyyy' फॉर्मेट में महीना-वर्ष निकालने के लिए, STR_TO_DATE() से पार्स करें फिर DATE_FORMAT() से फॉर्मेट करें।
उदाहरण: ShippingDate से महीना-वर्ष निकालना
डेमो टेबल बनाएं (तारीख VARCHAR में):
mysql> CREATE TABLE DemoTable1931 (ShippingDate VARCHAR(40));
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1931 VALUES
('10-11-2017'), ('31-01-2019'), ('02-02-2018'), ('10-06-2013');
क्वेरी:
mysql> SELECT DATE_FORMAT(STR_TO_DATE(ShippingDate, '%d-%m-%Y'), '%m-%Y') FROM DemoTable1931;
आउटपुट:
+-----------------------------------------------------------+ | DATE_FORMAT(STR_TO_DATE(ShippingDate, '%d-%m-%Y'), '%m-%Y') | +-----------------------------------------------------------+ | 11-2017 | | 01-2019 | | 02-2018 | | 06-2013 | +-----------------------------------------------------------+
फंक्शन व्याख्या
STR_TO_DATE(str, format)
- स्ट्रिंग को फॉर्मेट स्ट्रिंग के अनुसार DATE/DATETIME में पार्स करता है
%d= दिन (01-31),%m= महीना (01-12),%Y= 4-अंकीय वर्ष- अमान्य तारीख के लिए NULL लौटाता है
DATE_FORMAT(date, format)
- DATE/DATETIME को फॉर्मेट स्ट्रिंग के अनुसार स्ट्रिंग में फॉर्मेट करता है
%m= 2-अंकीय महीना (01-12),%Y= 4-अंकीय वर्ष%m-%Y→ '01-2019', '12-2023', आदि
सामान्य फॉर्मेट स्पेसिफायर
| स्पेसिफायर | अर्थ | उदाहरण |
|---|---|---|
| %m | महीना (01-12) | 01, 12 |
| %c | महीना (1-12) | 1, 12 |
| %Y | वर्ष (4 अंक) | 2024 |
| %y | वर्ष (2 अंक) | 24 |
| %d | दिन (01-31) | 01, 31 |
| %M | महीना नाम | January |
| %b | संक्षिप्त महीना | Jan |
सभी कॉलम के साथ चयन
SELECT *,
DATE_FORMAT(STR_TO_DATE(ShippingDate, '%d-%m-%Y'), '%m-%Y') AS month_year
FROM DemoTable1931;
बेहतर दृष्टिकोण: DATE कॉलम उपयोग करें
यदि संभव हो, तारीख को VARCHAR के बजाय DATE कॉलम में स्टोर करें:
-- तब सीधे: SELECT DATE_FORMAT(ShippingDate, '%m-%Y') FROM table;
लाभ: इंडेक्स उपयोग, वैलिडेशन, बिल्ट-इन फंक्शन, स्टोरेज दक्षता।
सावधानी
अमान्य तारीख स्ट्रिंग (जैसे '31-02-2023') के लिए STR_TO_DATE NULL लौटाता है। डेटा क्लीनिंग के लिए पहले वैलिडेट करें:
SELECT ShippingDate FROM DemoTable1931 WHERE STR_TO_DATE(ShippingDate, '%d-%m-%Y') IS NULL;