ใช้ STR_TO_DATE() แปลงสตริงเป็นวันที่ แล้วใช้ DATE_FORMAT() จัดรูปแบบให้ต้องการ
ไวยากรณ์
SELECT DATE_FORMAT(STR_TO_DATE(yourColumn, 'inputFormat'), 'outputFormat') FROM yourTable;
ตัวอย่างการใช้งาน
สร้างตาราง VarcharToDate:
mysql> CREATE TABLE VarcharToDate (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Created_Time VARCHAR(100),
-> PRIMARY KEY(Id)
-> );
เพิ่มข้อมูล (รูปแบบ dd/mm/yyyy):
mysql> INSERT INTO VarcharToDate(Created_Time) VALUES('12/1/2016');
mysql> INSERT INTO VarcharToDate(Created_Time) VALUES('14/3/2017');
mysql> INSERT INTO VarcharToDate(Created_Time) VALUES('15/3/2018');
mysql> INSERT INTO VarcharToDate(Created_Time) VALUES('19/5/2011');
mysql> INSERT INTO VarcharToDate(Created_Time) VALUES('19/8/2019');
mysql> INSERT INTO VarcharToDate(Created_Time) VALUES('21/11/2020');
ข้อมูลเดิม
+----+--------------+ | Id | Created_Time | +----+--------------+ | 1 | 12/1/2016 | | 2 | 14/3/2017 | | 3 | 15/3/2018 | | 4 | 19/5/2011 | | 5 | 19/8/2019 | | 6 | 21/11/2020 | +----+--------------+
คำสั่งแปลงเป็น DATE (รูปแบบ YYYY-MM-DD)
mysql> SELECT DATE_FORMAT(STR_TO_DATE(Created_Time, '%d/%m/%Y'), '%Y-%m-%d') AS Date
-> FROM VarcharToDate;
ผลลัพธ์
+------------+ | Date | +------------+ | 2016-01-12 | | 2017-03-14 | | 2018-03-15 | | 2011-05-19 | | 2019-08-19 | | 2020-11-21 | +------------+
รูปแบบวันที่สำคัญ:
%d= วัน (2 หลัก)%m= เดือน (2 หลัก)%Y= ปี (4 หลัก)%y= ปี (2 หลัก)