ฟังก์ชัน 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 |
| %p | AM หรือ PM | PM |
| %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) ใช้กับ %X | 15 |
| %v | สัปดาห์ของปี (เริ่มจากวันจันทร์) (01 – 53) ใช้กับ %x | 15 |
| %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