แปลง DATE เป็นข้อความตามรูปแบบที่ต้องการด้วย DATE_FORMAT
ใช้ DATE_FORMAT(date, format) เพื่อแปลงคอลัมน์ DATE/DATETIME ให้เป็น String ตาม Format Specifiers
สร้างตารางและข้อมูล
mysql> CREATE TABLE DemoTable (DueDate DATE);
Query OK, 0 rows affected (0.52 sec)
mysql> INSERT INTO DemoTable VALUES('2019-01-11'), ('2019-12-21'), ('2019-09-15');
Query OK, 3 rows affected
ข้อมูลต้นฉบับ (DATE Format)
+------------+ | DueDate | +------------+ | 2019-01-11 | | 2019-12-21 | | 2019-09-15 | +------------+
คำสั่ง: จัดรูปแบบเป็น '11 Jan 19' (%e %b %y)
mysql> SELECT DATE_FORMAT(DueDate, '%e %b %y') FROM DemoTable;
ผลลัพธ์
+----------------------------------+ | date_format(DueDate, '%e %b %y') | +----------------------------------+ | 11 Jan 19 | | 21 Dec 19 | | 15 Sep 19 | +----------------------------------+
คำอธิบาย Format Specifiers ที่ใช้
%e- วันของเดือน (1-31, Space-padded) → '11', '21', '15'%b- ชื่อเดือนย่อ 3 ตัวอักษร → 'Jan', 'Dec', 'Sep'%y- ปี 2 หลัก → '19'
รูปแบบทั่วไปในไทย (Thai Date Formats)
-- รูปแบบไทยมาตรฐาน
DATE_FORMAT(date, '%d/%m/%Y') -- 11/01/2019
DATE_FORMAT(date, '%e %M %Y') -- 11 January 2019
DATE_FORMAT(date, '%d %b %Y') -- 11 Jan 2019
-- พ.ศ. (ต้องคำนวณเอง: ปี + 543)
DATE_FORMAT(date, CONCAT('%d/%m/', YEAR(date) + 543)) -- 11/01/2562
-- หรือใช้ STR_TO_DATE แปลงจาก String กลับ DATE
STR_TO_DATE('11/01/2562', '%d/%m/%Y')
⚠️ หมายเหตุเรื่อง Locale
%M,%b,%W,%aขึ้นกับlc_time_namesSystem Variable- Default = 'en_US' (ภาษาอังกฤษ)
- ตั้งค่า:
SET lc_time_names = 'th_TH';(ต้องมี Locale ติดตั้งใน OS)