ใช้ STR_TO_DATE() พร้อม Format Specifier ที่ตรงกับรูปแบบสตริงต้นทาง
ตัวอย่างการใช้งาน
1. สร้างตารางเก็บวันที่เป็น VARCHAR
mysql> create table DemoTable (AdmissionDate varchar(100));
mysql> insert into DemoTable values('Wed, 19 Jun 2019 04:10:20');
2. แปลงด้วย STR_TO_DATE
mysql> SELECT STR_TO_DATE(AdmissionDate, '%a, %d %b %Y %H:%i:%s EDT') FROM DemoTable;
ผลลัพธ์
+---------------------------------------------------------+ | STR_TO_DATE(AdmissionDate, '%a, %d %b %Y %H:%i:%s EDT') | +---------------------------------------------------------+ | 2019-06-19 04:10:20 | +---------------------------------------------------------+
Format Specifiers ที่ใช้ในตัวอย่าง
| Specifier | ความหมาย | ตัวอย่าง |
|---|---|---|
%a | ชื่อวันสั้น (3 ตัวอักษร) | Wed |
%d | วันที่ (00-31) | 19 |
%b | ชื่อเดือนสั้น (3 ตัวอักษร) | Jun |
%Y | ปี 4 หลัก | 2019 |
%H | ชั่วโมง 24 ชม. (00-23) | 04 |
%i | นาที (00-59) | 10 |
%s | วินาที (00-59) | 20 |
EDT | ตัวอักษรคงที่ (Timezone) | EDT |
หมายเหตุสำคัญ
- รูปแบบต้องตรงกับข้อมูลต้นทาง ทุกตัวอักษร รวมถึงช่องว่าง, จุลภาค
- ชื่อวัน/เดือนขึ้นกับ
lc_time_names(Locale) ค่าเริ่มต้นเป็นอังกฤษ - MySQL 8.0+ รองรับ
STR_TO_DATEกับ Timezone ได้ดีขึ้น