ใช้ STR_TO_DATE() พร้อม Format Specifier เพื่อแปลงสตริงเป็น DATETIME
ไวยากรณ์
SELECT STR_TO_DATE(yourColumnName, '%d/%m/%Y %h:%i %p') AS alias FROM yourTableName;
ตัวอย่างการใช้งาน
1. สร้างตารางและข้อมูล (รูปแบบ DD/MM/YYYY HH:MM)
mysql> create table DemoTable (DueDate varchar(100));
mysql> insert into DemoTable values('11/02/2019 10:35'), ('21/12/2018 12:01');
2. แปลงเป็น DATETIME
mysql> SELECT STR_TO_DATE(DueDate, '%d/%m/%Y %h:%i %p') AS ConvertDate FROM DemoTable;
ผลลัพธ์
+---------------------+ | ConvertDate | +---------------------+ | 2019-02-11 10:35:00 | | 2018-12-21 00:01:00 | +---------------------+
Format Specifiers สำหรับเวลา
| Specifier | ความหมาย | ตัวอย่าง |
|---|---|---|
%h | ชั่วโมง 12 ชม. (01-12) | 10 |
%H | ชั่วโมง 24 ชม. (00-23) | 22 |
%i | นาที (00-59) | 35 |
%s | วินาที (00-59) | 00 |
%p | AM/PM | AM |
แปลงเฉพาะ TIME
SELECT STR_TO_DATE('10:35:00', '%H:%i:%s'); -- คืนค่า TIME
SELECT TIME('2019-02-11 10:35:00'); -- ดึง TIME จาก DATETIME
หมายเหตุ
- %h ต้องใช้คู่กับ %p (AM/PM) | %H ใช้ได้เดี่ยว (24 ชม.)
- รูปแบบต้องตรงกันทุกตัวอักษร
- คืนค่า NULL หากรูปแบบไม่ตรง