Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL จัดรูปแบบวันที่ แสดงชื่อเดือนเต็มด้วย DATE_FORMAT

ใช้ 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
%pAM/PMPM
%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'