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

SELECT วันที่จาก MySQL และจัดรูปแบบเป็นข้อความด้วย DATE_FORMAT

แปลง 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_names System Variable
  • Default = 'en_US' (ภาษาอังกฤษ)
  • ตั้งค่า: SET lc_time_names = 'th_TH'; (ต้องมี Locale ติดตั้งใน OS)