ฟังก์ชัน STR_TO_DATE()
แปลง String เป็น DATE/DATETIME ตามรูปแบบที่กำหนด (Format String):
STR_TO_DATE(date_string, format_mask)
Format Specifiers ที่นิยม
| Specifier | ความหมาย | ตัวอย่าง |
|---|---|---|
%Y |
ปี 4 หลัก | 2024 |
%y |
ปี 2 หลัก | 24 |
%m |
เดือน 2 หลัก (01-12) | 01, 12 |
%c |
เดือน 1-2 หลัก (1-12) | 1, 12 |
%d |
วัน 2 หลัก (01-31) | 05, 31 |
%e |
วัน 1-2 หลัก (1-31) | 5, 31 |
%b |
ชื่อเดือนย่อ 3 ตัวอักษร | Jan, Dec |
%M |
ชื่อเดือนเต็ม | January, December |
%H |
ชั่วโมง 24h (00-23) | 13 |
%h |
ชั่วโมง 12h (01-12) | 01 |
%i |
นาที (00-59) | 30 |
%s |
วินาที (00-59) | 45 |
ตัวอย่างการใช้งาน
สร้างตารางเก็บวันที่เป็น String
CREATE TABLE ParseDateDemo (yourDate VARCHAR(200));
INSERT INTO ParseDateDemo VALUES
('10-Nov-18'), ('15-Nov-18'), ('10-Dec-18'), ('10-Aug-17');
ข้อมูลต้นฉบับ
+-----------+
| yourDate |
+-----------+
| 10-Nov-18 |
| 15-Nov-18 |
| 10-Dec-18 |
| 10-Aug-17 |
+-----------+
คำสั่ง Parse (Format: %d-%b-%y)
SELECT STR_TO_DATE(yourDate, '%d-%b-%y') AS DateNumber
FROM ParseDateDemo;
ผลลัพธ์ (DATE Type)
+------------+
| DateNumber |
+------------+
| 2018-11-10 |
| 2018-11-15 |
| 2018-12-10 |
| 2017-08-10 |
+------------+
รูปแบบวันที่ที่พบบ่อยและ Format Mask
| String Format | Format Mask |
|---|---|
| 2024-12-25 | %Y-%m-%d |
| 25/12/2024 | %d/%m/%Y |
| 25-12-2024 | %d-%m-%Y |
| Dec 25, 2024 | %b %d, %Y |
| December 25, 2024 | %M %d, %Y |
| 2024-12-25 14:30:00 | %Y-%m-%d %H:%i:%s |
| 25/12/2024 2:30 PM | %d/%m/%Y %h:%i %p |
ฟังก์ชันคู่: DATE_FORMAT()
ทำตรงข้าม: Date → String
SELECT DATE_FORMAT(NOW(), '%d-%b-%Y'); -- '07-Dec-2024'
ข้อผิดพลาดทั่วไป
- Format Mask ไม่ตรงกับข้อมูล → คืนค่า NULL
- วัน/เดือน 1 หลัก ใช้
%e/%cไม่ใช่%d/%m - ชื่อเดือนภาษาไทย ไม่รองรับโดยตรง (ต้อง Set Locale หรือ Map เอง)