Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แปลงรูปแบบวันที่ ISO 8601 (yyyy-mm-ddThh:mm:ss.sssZ) เป็นมาตรฐาน MySQL

บทความนี้สาธิตการแปลงรูปแบบวันที่มาตรฐาน 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