ฟังก์ชัน DATE_FORMAT()
DATE_FORMAT(date, format)
ไวยากรณ์: แสดง 30-04-2020 แทน 2020-04-30
SELECT DATE_FORMAT(yourDateColumn, '%d-%m-%Y') AS formatted_date
FROM yourTable;
ตัวอย่าง: ตาราง demo80
CREATE TABLE demo80 (due_date DATE);
INSERT INTO demo80 VALUES
('2020-04-30'), ('2016-01-10'), ('2018-03-21');
ข้อมูล (Default Format: YYYY-MM-DD)
+------------+
| due_date |
+------------+
| 2020-04-30 |
| 2016-01-10 |
| 2018-03-21 |
+------------+
คำสั่งจัดรูปแบบ
SELECT DATE_FORMAT(due_date, '%d-%m-%Y') AS ShowDate
FROM demo80;
ผลลัพธ์
+------------+
| ShowDate |
+------------+
| 30-04-2020 |
| 10-01-2016 |
| 21-03-2018 |
+------------+
Format Specifiers ทั้งหมด
| Specifier | ความหมาย | ตัวอย่าง |
%d | วัน (00-31) | 30 |
%e | วัน (0-31, ไม่มี Leading Zero) | 3 |
%m | เดือน (01-12) | 04 |
%c | เดือน (1-12) | 4 |
%Y | ปี 4 หลัก | 2020 |
%y | ปี 2 หลัก | 20 |
%M | ชื่อเดือนเต็ม | April |
%b | ชื่อเดือนย่อ | Apr |
%W | ชื่อวันเต็ม | Thursday |
%a | ชื่อวันย่อ | Thu |
%H | ชั่วโมง 24h (00-23) | 14 |
%h | ชั่วโมง 12h (01-12) | 02 |
%i | นาที (00-59) | 30 |
%s | วินาที (00-59) | 05 |
%p | AM/PM | PM |
รูปแบบไทยที่นิยม
| รูปแบบ | Format String | ตัวอย่าง |
| วัน-เดือน-ปี | %d-%m-%Y | 30-04-2020 |
| วัน/เดือน/ปี | %d/%m/%Y | 30/04/2020 |
| วัน เดือน ปี (ไทย) | %d %M %Y | 30 April 2020 |
| วันที่/เวลา | %d-%m-%Y %H:%i:%s | 30-04-2020 14:30:05 |
ใช้ใน UPDATE (เก็บเป็น VARCHAR)
UPDATE demo80
SET due_date_str = DATE_FORMAT(due_date, '%d-%m-%Y');
ประสิทธิภาพ
- DATE_FORMAT ใช้ CPU ค่อนข้างมาก — หลีกเลี่ยงใน WHERE Clause
- WHERE ใช้ Date Comparison โดยตรง:
WHERE due_date = '2020-04-30'
- SELECT เท่านั้น: OK สำหรับรายงาน/แสดงผล
MySQL 8.0: TO_CHAR() Alias
SELECT TO_CHAR(due_date, 'DD-MM-YYYY') FROM demo80; -- Oracle Syntax Compatibility