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

ฟังก์ชัน DATE_FORMAT() ใช้เพื่อแปลงค่า DATE, DATETIME หรือ TIMESTAMP ให้อยู่ในรูปแบบข้อความ (string) ตามรูปแบบ (format) ที่กำหนด เหมาะสำหรับการปรับแต่งรูปแบบของวันที่และเวลา ให้อยู่ในรูปแบบที่ต้องการ เช่น 10/04/2025, April 10, 2025, หรือ 10 เม.ย. 2025

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

DATE_FORMAT(date, format)
  • date คือค่าวันที่/เวลา ที่ต้องการแปลง (ชนิด DATE, DATETIME, TIMESTAMP)
  • format คือรูปแบบที่ต้องการแสดงผล (ใช้สัญลักษณ์ % ตามด้วยรหัส)

รูปแบบฟอร์แมตที่สามารถใช้ได้

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

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

แสดงวันที่ในรูปแบบ วัน/เดือน/ปี

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

แสดงชื่อวันและเดือน

SQL
SELECT DATE_FORMAT('2025-04-10', '%W, %M %e, %Y') AS pretty_date;
-- ผลลัพธ์: Thursday, April 10, 2025

แสดงเวลาปัจจุบันในรูปแบบ ชั่วโมง:นาที:วินาที

SQL
SELECT DATE_FORMAT(NOW(), '%H:%i:%s') AS current_time;
-- ผลลัพธ์: เช่น 14:25:33

ตัวอย่างการประยุกต์ใช้งาน

แสดงวันที่สมัครสมาชิก

SQL
SELECT member_id,
       DATE_FORMAT(join_date, '%d/%m/%Y') AS join_date_th
FROM members;

แสดงวันที่ของคำสั่งซื้อ

SQL
SELECT order_id,
       DATE_FORMAT(order_date, '%W') AS order_day
FROM orders;

หมายเหตุ

  • DATE_FORMAT() คืนค่าเป็นข้อความ (string) ไม่สามารถนำไปคำนวณโดยตรง
  • รูปแบบ (%) ต้องเขียนให้ถูกต้อง ถ้าใส่ผิดจะได้ค่าผิดหรือ NULL
แชร์เรื่องนี้