STR_TO_DATE और DATE_FORMAT से तारीख फॉर्मेट बदलें
संख्यात्मक स्ट्रिंग (YYYYMMDD) को मानक तारीख फॉर्मेट (YYYY-MM-DD) में बदलने के लिए STR_TO_DATE पार्स करने और DATE_FORMAT से फॉर्मेट करने के लिए उपयोग करें।
सिंटैक्स
DATE_FORMAT(STR_TO_DATE(column, '%Y%m%d'), '%Y-%m-%d')
टेबल और डेटा
mysql> CREATE TABLE DemoTable (
ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientProjectDeadline VARCHAR(200)
);
mysql> INSERT INTO DemoTable(ClientProjectDeadline) VALUES('20121221');
mysql> INSERT INTO DemoTable(ClientProjectDeadline) VALUES('20190416');
mysql> INSERT INTO DemoTable(ClientProjectDeadline) VALUES('20160624');
mysql> INSERT INTO DemoTable(ClientProjectDeadline) VALUES('20170131');
मूल डेटा
mysql> SELECT * FROM DemoTable;
+----------+-----------------------+
| ClientId | ClientProjectDeadline |
+----------+-----------------------+
| 1 | 20121221 |
| 2 | 20190416 |
| 3 | 20160624 |
| 4 | 20170131 |
+----------+-----------------------+
रूपांतरण क्वेरी
mysql> SELECT DATE_FORMAT(STR_TO_DATE(ClientProjectDeadline, '%Y%m%d'), '%Y-%m-%d') FROM DemoTable;
+----------------------------------------------------------------------+
| DATE_FORMAT(STR_TO_DATE(ClientProjectDeadline, '%Y%m%d'), '%Y-%m-%d') |
+----------------------------------------------------------------------+
| 2012-12-21 |
| 2019-04-16 |
| 2016-06-24 |
| 2017-01-31 |
+----------------------------------------------------------------------+
फॉर्मेट स्पेसिफायर
| स्पेसिफायर | अर्थ |
|---|---|
%Y | 4-अंकीय वर्ष |
%m | 2-अंकीय महीना (01-12) |
%d | 2-अंकीय दिन (01-31) |
अन्य उपयोगी फॉर्मेट
-- DD/MM/YYYY के लिए
DATE_FORMAT(STR_TO_DATE(col, '%Y%m%d'), '%d/%m/%Y')
-- YY-MM-DD (2-अंकीय वर्ष) के लिए
DATE_FORMAT(STR_TO_DATE(col, '%Y%m%d'), '%y-%m-%d')
सर्वोत्तम अभ्यास
तारीख डेटा के लिए हमेशा उचित DATE या DATETIME टाइप का उपयोग करें। स्ट्रिंग के रूप में संग्रहीत तारीखें केवल माइग्रेशन या लिगेसी डेटा के लिए सहन करें।