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

แปลงรูปแบบวันที่ VARCHAR ใน MySQL ด้วย STR_TO_DATE และ UPDATE

เมื่อคอลัมน์เก็บวันที่เป็น 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 จำนวนมาก