การแปลงรูปแบบวันที่จาก YYYYMMDD เป็น YYYY-MM-DD ใน MySQL
ใช้ STR_TO_DATE() แปลงสตริงเป็น Date ตาม Format ต้นทาง แล้ว DATE_FORMAT() แปลงเป็น Format ปลายทาง
SELECT DATE_FORMAT(STR_TO_DATE(yourColumn, '%Y%m%d'), '%Y-%m-%d') FROM yourTable;
ตัวอย่างการใช้งาน
สร้างตารางเก็บวันที่แบบ String (YYYYMMDD):
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');
ข้อมูลต้นฉบับ:
+----------+-----------------------+ | ClientId | ClientProjectDeadline | +----------+-----------------------+ | 1 | 20121221 | | 2 | 20190416 | | 3 | 20160624 | | 4 | 20170131 | +----------+-----------------------+
คิวรีแปลงเป็น YYYY-MM-DD:
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 | +----------------------------------------------------------------------+
Format Specifiers:
%Y- ปี 4 หลัก (2019)%m- เดือน 2 หลัก (01-12)%d- วัน 2 หลัก (01-31)%y- ปี 2 หลัก (19) - ใช้ได้ใน Format ปลายทางได้
ทางลัด (MySQL 8.0+): ใช้ CAST('20190416' AS DATE) โดยตรงได้ หาก Format เป็น YYYYMMDD มาตรฐาน