MySQL में गैर-मानक प्रारूप (जैसे DD.MM.YYYY) में संग्रहीत दिनांक स्ट्रिंग्स की तुलना करने के लिए STR_TO_DATE() फ़ंक्शन का उपयोग करके उन्हें मानक DATE प्रकार में परिवर्तित करें।
सिंटैक्स
STR_TO_DATE(date_string, format_mask)
सामान्य प्रारूप मास्क
| प्रारूप | विवरण | उदाहरण |
|---|---|---|
%d | दिन (01-31) | 01, 15, 31 |
%m | महीना (01-12) | 01, 12 |
%Y | 4-अंकीय वर्ष | 2024 |
%y | 2-अंकीय वर्ष | 24 |
%H | घंटा (00-23) | 14 |
%i | मिनट (00-59) | 30 |
%s | सेकंड (00-59) | 45 |
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें (DD.MM.YYYY प्रारूप)
mysql> CREATE TABLE DemoTable712 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ArrivalDate VARCHAR(100)
);
Query OK, 0 rows affected (0.65 sec)
mysql> INSERT INTO DemoTable712 (ArrivalDate) VALUES
('10.01.2019'), ('11.12.2018'), ('01.11.2017'), ('20.06.2016');
Query OK, 4 rows affected (0.15 sec)
2. सभी रिकॉर्ड्स देखें
mysql> SELECT * FROM DemoTable712; +----+-------------+ | Id | ArrivalDate | +----+-------------+ | 1 | 10.01.2019 | | 2 | 11.12.2018 | | 3 | 01.11.2017 | | 4 | 20.06.2016 | +----+-------------+ 4 rows in set (0.00 sec)
3. STR_TO_DATE के साथ तुलना करें
mysql> SELECT * FROM DemoTable712 WHERE STR_TO_DATE(ArrivalDate, '%d.%m.%Y') = '2017-11-01'; +----+-------------+ | Id | ArrivalDate | +----+-------------+ | 3 | 01.11.2017 | +----+-------------+ 1 row in set (0.00 sec)
अन्य तुलना उदाहरण
तिथि सीमा
SELECT * FROM DemoTable712 WHERE STR_TO_DATE(ArrivalDate, '%d.%m.%Y') BETWEEN '2018-01-01' AND '2018-12-31';
क्रमबद्ध करना
SELECT * FROM DemoTable712 ORDER BY STR_TO_DATE(ArrivalDate, '%d.%m.%Y');
वर्तमान तिथि से तुलना
SELECT * FROM DemoTable712 WHERE STR_TO_DATE(ArrivalDate, '%d.%m.%Y') >= CURDATE();
सामान्य दिनांक प्रारूप और उनके मास्क
| स्ट्रिंग प्रारूप | मास्क | उदाहरण |
|---|---|---|
| DD/MM/YYYY | %d/%m/%Y | 31/12/2024 |
| MM/DD/YYYY | %m/%d/%Y | 12/31/2024 |
| YYYY-MM-DD | %Y-%m-%d | 2024-12-31 |
| DD-MM-YYYY HH:MM:SS | %d-%m-%Y %H:%i:%s | 31-12-2024 14:30:45 |
| Mon DD, YYYY | %b %d, %Y | Dec 31, 2024 |
प्रदर्शन नोट
WHERE क्लॉज में STR_TO_DATE() का उपयोग इंडेक्स उपयोग को रोकता है। बेहतर प्रदर्शन के लिए:
- दिनांक को मूल DATE/DATETIME कॉलम में संग्रहीत करें
- या एक जनरेटेड कॉलम जोड़ें:
parsed_date DATE AS (STR_TO_DATE(ArrivalDate, '%d.%m.%Y')) STORED - फिर parsed_date पर इंडेक्स बनाएं