บทความนี้สาธิตการแปลงรูปแบบวันที่มาตรฐาน ISO 8601 (เช่น 2001-01-10T06:20:00.000Z) ให้เป็นรูปแบบ YYYY-MM-DD HH:MM:SS ที่ MySQL ใช้งานได้ โดยใช้ STR_TO_DATE และ DATE_FORMAT ในคำสั่ง UPDATE
สร้างตารางและข้อมูล ISO 8601
mysql> CREATE TABLE DemoTable668 (JoiningDate VARCHAR(200));
Query OK, 0 rows affected (0.97 sec)
mysql> INSERT INTO DemoTable668 VALUES('2001-01-10T06:20:00.000Z');
mysql> INSERT INTO DemoTable668 VALUES('2019-07-20T04:00:00.000Z');
mysql> INSERT INTO DemoTable668 VALUES('2016-02-12T05:10:50.000Z');
คิวรี UPDATE แปลงรูปแบบทั้งตาราง
mysql> UPDATE DemoTable668
SET JoiningDate = DATE_FORMAT(
STR_TO_DATE(JoiningDate, '%Y-%m-%dT%H:%i:%s.000Z'),
'%Y-%m-%d %H:%i:%s'
);
Query OK, 3 rows affected (0.11 sec)
ผลลัพธ์หลังแปลง
+---------------------+
| JoiningDate |
+---------------------+
| 2001-01-10 06:20:00 |
| 2019-07-20 04:00:00 |
| 2016-02-12 05:10:50 |
+---------------------+
คำอธิบาย Format String:
%Y-%m-%dT%H:%i:%s.000Z- ตรงกับ ISO 8601: ปี-เดือน-วัน T ชั่วโมง:นาที:วินาที.มิลลิวินาที Z (UTC)%Y-%m-%d %H:%i:%s- รูปแบบมาตรฐาน MySQL DATETIME- สมมติมิลลิวินาทีเป็น .000 เสมอ (หากแตกต่างต้องปรับ Pattern)
แนะนำ: หากเป็น DATETIME/TIMESTAMP column ให้ใช้ CAST(... AS DATETIME) แทนการเก็บเป็น VARCHAR