ใช้ DATE_FORMAT() จัดรูปแบบวันที่อ่านง่าย
MySQL มี DATE_FORMAT(date, format) สำหรับจัดรูปแบบ Date/DateTime ตาม Pattern ที่กำหนด
Format Specifiers สำคัญ
| Specifier | ความหมาย | ตัวอย่าง |
|---|---|---|
| %Y | ปี 4 หลัก | 2024 |
| %y | ปี 2 หลัก | 24 |
| %M | ชื่อเดือนเต็ม | January |
| %m | เดือน 2 หลัก | 01 |
| %b | ชื่อเดือนย่อ 3 ตัว | Jan |
| %d | วัน 2 หลัก | 01 |
| %e | วัน (ไม่มี Leading Zero) | 1 |
| %H | ชั่วโมง 24h (00-23) | 14 |
| %h / %I | ชั่วโมง 12h (01-12) | 02 |
| %i | นาที (00-59) | 30 |
| %s | วินาที (00-59) | 45 |
| %p | AM/PM | PM |
| %W | ชื่อวันเต็ม | Monday |
| %a | ชื่อวันย่อ | Mon |
ตัวอย่าง: แสดงวันที่แบบ วัน.เดือนเต็ม.ปี
CREATE TABLE DemoTable605 (DueDate DATE);
INSERT INTO DemoTable605 VALUES
('2019-01-21'), ('2019-02-23'), (CURDATE());
SELECT DATE_FORMAT(DueDate, '%d.%M.%Y') FROM DemoTable605;
ผลลัพธ์:
+----------------------------------+
| DATE_FORMAT(DueDate, '%d.%M.%Y') |
+----------------------------------+
| 21.January.2019 |
| 23.February.2019 |
| 04.March.2019 |
| 24.April.2019 |
| 13.July.2019 |
+----------------------------------+
รูปแบบทั่วไปในไทย
-- Thai Format: วัน เดือน ปี (พ.ศ.)
SELECT DATE_FORMAT(DueDate, '%d %M %Y') AS thai_date
-- ผล: 21 January 2019
-- เพิ่ม พ.ศ. (Buddhist Era = ค.ศ. + 543)
SELECT CONCAT(DATE_FORMAT(DueDate, '%d %M '), YEAR(DueDate) + 543) AS thai_be_date
-- ผล: 21 January 2562
-- ISO Format (สำหรับ API/JSON)
SELECT DATE_FORMAT(DueDate, '%Y-%m-%d') AS iso_date
-- ผล: 2019-01-21
-- DateTime Full
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS datetime_full
-- ผล: 2024-01-15 14:30:45
ฟังก์ชันที่เกี่ยวข้อง
STR_TO_DATE(str, format)- Parse String → Date (ใช้ Import ข้อมูล)DATE_FORMAT(date, format)- Format Date → String (ใช้ Export/Display)GET_FORMAT(date_type, 'ISO'/'USA'/'EUR'/'JIS'/'INTERNAL')- ดู Format มาตรฐาน
Performance Note
DATE_FORMAT ใน WHERE Clause จะทำให้ Index บน Date Column ไม่ทำงาน (Non-SARGable)
-- ❌ ช้า (Full Scan)
WHERE DATE_FORMAT(created_at, '%Y-%m') = '2024-01'
-- ✅ เร็ว (Index Range Scan)
WHERE created_at >= '2024-01-01' AND created_at < '2024-02-01'