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

แปลงรูปแบบวันที่ (Parse Date) ใน MySQL ด้วย STR_TO_DATE


ฟังก์ชัน 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 เอง)