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

จัดรูปแบบวันที่แสดงเดือนและปีใน MySQL ด้วย DATE_FORMAT

เมื่อต้องการแสดงวันที่ในรูปแบบ "MonthName Year" (เช่น April 2013) ให้ใช้ DATE_FORMAT() กำหนด Specifier %M %Y

Syntax

SELECT DATE_FORMAT(date_column, '%M %Y') AS alias FROM table_name;

สร้างตารางและข้อมูล

mysql> create table DemoTable (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    AdmissionDate date
);
mysql> insert into DemoTable(AdmissionDate) values
('2013-04-21'),('2014-01-31'),('2016-09-01'),('2018-12-12'),('2019-04-01');

ข้อมูลในตาราง

+----+---------------+
| Id | AdmissionDate |
+----+---------------+
| 1  | 2013-04-21    |
| 2  | 2014-01-31    |
| 3  | 2016-09-01    |
| 4  | 2018-12-12    |
| 5  | 2019-04-01    |
+----+---------------+

คำสั่งจัดรูปแบบ เดือน ปี

mysql> select DATE_FORMAT(AdmissionDate, '%M %Y') AS MonthNameAndYear FROM DemoTable;

ผลลัพธ์

+------------------+
| MonthNameAndYear |
+------------------+
| April 2013       |
| January 2014     |
| September 2016   |
| December 2018    |
| April 2019       |
+------------------+

Date Format Specifiers สำหรับวันที่

รูปแบบทั่วไปในไทย

  • %d %M %Y → 21 April 2013
  • %d/%m/%Y → 21/04/2013
  • %Y-%m-%d → 2013-04-21 (ISO)
  • %W, %d %M %Y → Sunday, 21 April 2013

ภาษาไทย: ตั้งค่า Locale

-- ตั้งค่า Session ให้แสดงชื่อเดือนภาษาไทย
SET lc_time_names = 'th_TH';
SELECT DATE_FORMAT('2024-04-21', '%d %M %Y'); -- 21 เมษายน 2567

ต้องมี Locale th_TH ติดตั้งในระบบปฏิบัติการ

คำเตือน

  • DATE_FORMAT คืน VARCHAR → เรียงลำดับเป็น String ไม่ใช่ Date
  • ORDER BY ให้ใช้คอลัมน์ Date ต้นฉบับ
  • MySQL 8.0+ ใช้ CAST(DATE_FORMAT(...) AS DATE) ได้บางรูปแบบ
Specifierความหมายตัวอย่าง
%Mชื่อเดือนเต็มJanuary, April, December
%mเดือน 2 หลัก01, 04, 12
%bชื่อเดือนย่อ 3 ตัวJan, Apr, Dec
%Yปี 4 หลัก2013, 2024
%yปี 2 หลัก13, 24
%dวัน 2 หลัก01, 21
%Wชื่อวันเต็มMonday, Sunday
%aชื่อวันย่อMon, Sun