MySQL में गैर-मानक दिनांक प्रारूप (जैसे MM-DD-YYYY HH:MM:SS) को मानक MySQL DATETIME प्रारूप (YYYY-MM-DD HH:MM:SS) में परिवर्तित करने के लिए STR_TO_DATE() के साथ REPLACE() का संयोजन उपयोग करें।
सिंटैक्स
SELECT STR_TO_DATE(REPLACE(date_string, '''', ''), '%c-%e-%Y %T') FROM table_name;
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE DemoTable (DueDate VARCHAR(100));
Query OK, 0 rows affected (0.78 sec)
mysql> INSERT INTO DemoTable VALUES
('10-01-2019 10:19:20'),
('12-03-2018 11:00:00'),
('02-23-2018 04:20:40');
Query OK, 3 rows affected (0.15 sec)
2. मूल डेटा देखें
mysql> SELECT * FROM DemoTable; +---------------------+ | DueDate | +---------------------+ | 10-01-2019 10:19:20 | | 12-03-2018 11:00:00 | | 02-23-2018 04:20:40 | +---------------------+ 3 rows in set (0.00 sec)
3. प्रारूप परिवर्तित करें
mysql> SELECT STR_TO_DATE(REPLACE(DueDate, '''', ''), '%c-%e-%Y %T') FROM DemoTable; +-----------------------------------------------------+ | STR_TO_DATE(REPLACE(DueDate,''',''), '%c-%e-%Y %T') | +-----------------------------------------------------+ | 2019-10-01 10:19:20 | | 2018-12-03 11:00:00 | | 2018-02-23 04:20:40 | +-----------------------------------------------------+ 3 rows in set (0.00 sec)
प्रारूप विश्लेषण
| मूल | पार्स किया गया | व्याख्या |
|---|---|---|
| 10-01-2019 10:19:20 | 2019-10-01 10:19:20 | MM-DD-YYYY → YYYY-MM-DD (महीना 10, दिन 01) |
| 12-03-2018 11:00:00 | 2018-12-03 11:00:00 | महीना 12, दिन 03 |
| 02-23-2018 04:20:40 | 2018-02-23 04:20:40 | महीना 02, दिन 23 |
प्रारूप स्पेसिफायर्स
%c- महीना (1-12, अग्रणी शून्य वैकल्पिक)%e- दिन (1-31, अग्रणी स्पेस)%Y- 4-अंकीय वर्ष%T- समय (HH:MM:SS),%H:%i:%sके बराबर
REPLACE की भूमिका
उदाहरण में REPLACE(DueDate, '''', '') किसी संभावित सिंगल कोट्स को हटाता है। यदि आपके डेटा में कोट्स नहीं हैं, तो सीधे STR_TO_DATE(DueDate, '%c-%e-%Y %T') उपयोग करें।
अपडेट के साथ स्थायी परिवर्तन
-- नया कॉलम जोड़ें ALTER TABLE DemoTable ADD DueDateParsed DATETIME; -- परिवर्तित करके अपडेट करें UPDATE DemoTable SET DueDateParsed = STR_TO_DATE(REPLACE(DueDate, '''', ''), '%c-%e-%Y %T'); -- फिर पुराना कॉलम हटाएं और नए का नाम बदलें
MySQL 8.0+ में जनरेटेड कॉलम
ALTER TABLE DemoTable ADD DueDateParsed DATETIME AS (STR_TO_DATE(REPLACE(DueDate, '''', ''), '%c-%e-%Y %T')) STORED;