MySQL การใช้งานฟังก์ชัน STR_TO_DATE()

ฟังก์ชัน STR_TO_DATE() ใช้เพื่อแปลงข้อความ (String) ที่เป็นรูปแบบวัน/เวลา ให้เป็นชนิดข้อมูล DATE, DATETIME, หรือ TIME เหมาะสำหรับการทำงานกับข้อมูลที่เก็บวันเวลาในรูปแบบข้อความ เช่น '10-04-2025', '2025/04/10 14:30' เป็นต้น

ประโยชน์ของฟังก์ชัน STR_TO_DATE()

  1. ใช้แปลงข้อมูลที่เก็บเป็นข้อความให้เป็นชนิด DATE, DATETIME, TIME
  2. ช่วยให้สามารถใช้คำสั่ง SQL เช่น WHERE, DATEDIFF(), ORDER BY กับวันที่ที่แปลงแล้วได้
  3. เหมาะสำหรับการนำเข้าข้อมูลจาก Excel, CSV, หรือระบบภายนอก

รูปแบบการใช้งาน

STR_TO_DATE(string, format)
  • string คือข้อความที่เก็บวันหรือเวลาที่ต้องการแปลง
  • format คือรูปแบบที่ใช้แปลงข้อความเป็นวันที่/เวลา (format string)

รูปแบบที่ใช้ได้ (format specifiers)

Specifier คำอธิบาย ตัวอย่าง
%aชื่อวันแบบย่อ (Sun – Sat)Sun
%bชื่อเดือนแบบย่อ (Jan – Dec)Apr
%cเลขเดือน (1 – 12)4
%Dวันที่พร้อม suffix (1st, 2nd, 3rd, …)10th
%dวันที่ (มีเลข 0 นำหน้า) (01 – 31)10
%eวันที่ (ไม่มีเลข 0 นำหน้า) (1 – 31)10
%fไมโครวินาที (000000 – 999999)123456
%Hชั่วโมง (24 ชม.) (00 – 23)14
%hชั่วโมง (12 ชม.) (01 – 12)02
%Iชั่วโมง (12 ชม.) (01 – 12)02
%iนาที (00 – 59)30
%jวันในปี (001 – 366)100
%kชั่วโมง (24 ชม. ไม่เติม 0) (0 – 23)14
%lชั่วโมง (12 ชม. ไม่เติม 0) (1 – 12)2
%Mชื่อเดือนเต็ม (January – December)April
%mเลขเดือน (มีเลข 0 นำหน้า) (01 – 12)04
%pAM หรือ PMPM
%rเวลาแบบ 12 ชม. (hh:mm:ss AM/PM)02:30:00 PM
%Sวินาที (00 – 59)45
%sวินาที (00 – 59)45
%Tเวลาแบบ 24 ชม. (hh:mm:ss)14:30:45
%Uสัปดาห์ของปี (เริ่มจากวันอาทิตย์) (00 – 53)15
%uสัปดาห์ของปี (เริ่มจากวันจันทร์) (00 – 53)15
%Vสัปดาห์ของปี (เริ่มจากวันอาทิตย์) (01 – 53) ใช้กับ %X15
%vสัปดาห์ของปี (เริ่มจากวันจันทร์) (01 – 53) ใช้กับ %x15
%Wชื่อวันเต็ม (Sunday – Saturday)Thursday
%wเลขวันในสัปดาห์ (0 = Sunday และ 6 = Saturday)4
%Xเลขปีแบบเต็ม โดยวันอาทิตย์เป็นวันแรกของสัปดาห์ (ใช้กับ %V)2025
%xเลขปีแบบเต็ม โดยวันจันทร์เป็นวันแรกของสัปดาห์ (ใช้กับ %v)2025
%Yปีแบบเต็ม (4 หลัก)2025
%yปีแบบ 2 หลัก (00 – 99)25

ตัวอย่างการใช้งาน

แปลง '10-04-2025' (วันที่-เดือน-ปี)

SQL
SELECT STR_TO_DATE('10-04-2025', '%d-%m-%Y') AS converted_date;
-- ผลลัพธ์: 2025-04-10

แปลงวันที่และเวลา '2025/04/10 14:30:00'

SQL
SELECT STR_TO_DATE('2025/04/10 14:30:00', '%Y/%m/%d %H:%i:%s') AS datetime_value;
-- ผลลัพธ์: 2025-04-10 14:30:00

ใช้ในคำสั่ง WHERE เพื่อกรองข้อมูล

SQL
SELECT *
FROM events
WHERE event_date = STR_TO_DATE('15/04/2025', '%d/%m/%Y');

หมายเหตุ

  • string และ format ต้องตรงกันเป๊ะ หากไม่ตรง ผลลัพธ์จะเป็น NULL
  • ฟังก์ชันนี้แปลงได้เฉพาะข้อความที่มีรูปแบบชัดเจน เช่น '04/2025' ต้องใช้ %m/%Y
  • ไม่รองรับการแปลงจากภาษาอื่น เช่น ชื่อเดือนเป็นภาษาไทย
แชร์เรื่องนี้