เมื่อคอลัมน์เก็บวันที่เป็น VARCHAR ในรูปแบบหนึ่ง (เช่น MM/DD/YYYY) และต้องการแปลงเป็นรูปแบบมาตรฐาน DATE (YYYY-MM-DD) ให้ใช้ UPDATE ร่วมกับ STR_TO_DATE()
รูปแบบคำสั่ง (Syntax)
UPDATE yourTableName SET yourColumnName = STR_TO_DATE(yourColumnName, '%m/%d/%Y');
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
DueDate varchar(100) );
Query OK, 0 rows affected (0.56 sec)
เพิ่มข้อมูลวันที่รูปแบบ MM/DD/YYYY
mysql> insert into DemoTable values('12/01/2019');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('01/31/2016');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('03/17/2018');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('07/25/2017');
Query OK, 1 row affected (0.14 sec)
แสดงข้อมูลก่อนแปลง
mysql> select * from DemoTable;
+------------+ | DueDate | +------------+ | 12/01/2019 | | 01/31/2016 | | 03/17/2018 | | 07/25/2017 | +------------+ 4 rows in set (0.00 sec)
คำสั่ง UPDATE แปลงรูปแบบวันที่
mysql> update DemoTable set DueDate = str_to_date(DueDate, '%m/%d/%Y'); Query OK, 4 rows affected (0.18 sec) Rows matched: 4 Changed: 4 Warnings: 0
ตรวจสอบข้อมูลหลังแปลง (กลายเป็น DATE แบบ YYYY-MM-DD)
mysql> select * from DemoTable;
+------------+ | DueDate | +------------+ | 2019-12-01 | | 2016-01-31 | | 2018-03-17 | | 2017-07-25 | +------------+ 4 rows in set (0.00 sec)
คำอธิบาย Format Specifiers:
%m- เดือน 2 หลัก (01-12)%d- วันที่ 2 หลัก (01-31)%Y- ปี 4 หลัก
ข้อควรระวัง: คำสั่งนี้จะเปลี่ยนชนิดข้อมูลของคอลัมน์จาก VARCHAR เป็น DATE โดยอัตโนมัติ (Implicit conversion) แนะนำให้สำรองข้อมูลก่อนรัน UPDATE จำนวนมาก