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

จัดรูปแบบวันที่ MySQL เป็น DD-MM-YYYY ด้วย DATE_FORMAT

ฟังก์ชัน DATE_FORMAT()

DATE_FORMAT(date, format)

ไวยากรณ์: แสดง 30-04-2020 แทน 2020-04-30

SELECT DATE_FORMAT(yourDateColumn, '%d-%m-%Y') AS formatted_date
FROM yourTable;

ตัวอย่าง: ตาราง demo80

CREATE TABLE demo80 (due_date DATE);

INSERT INTO demo80 VALUES
('2020-04-30'), ('2016-01-10'), ('2018-03-21');

ข้อมูล (Default Format: YYYY-MM-DD)

+------------+
| due_date   |
+------------+
| 2020-04-30 |
| 2016-01-10 |
| 2018-03-21 |
+------------+

คำสั่งจัดรูปแบบ

SELECT DATE_FORMAT(due_date, '%d-%m-%Y') AS ShowDate
FROM demo80;

ผลลัพธ์

+------------+
| ShowDate   |
+------------+
| 30-04-2020 |
| 10-01-2016 |
| 21-03-2018 |
+------------+

Format Specifiers ทั้งหมด

Specifierความหมายตัวอย่าง
%dวัน (00-31)30
%eวัน (0-31, ไม่มี Leading Zero)3
%mเดือน (01-12)04
%cเดือน (1-12)4
%Yปี 4 หลัก2020
%yปี 2 หลัก20
%Mชื่อเดือนเต็มApril
%bชื่อเดือนย่อApr
%Wชื่อวันเต็มThursday
%aชื่อวันย่อThu
%Hชั่วโมง 24h (00-23)14
%hชั่วโมง 12h (01-12)02
%iนาที (00-59)30
%sวินาที (00-59)05
%pAM/PMPM

รูปแบบไทยที่นิยม

รูปแบบFormat Stringตัวอย่าง
วัน-เดือน-ปี%d-%m-%Y30-04-2020
วัน/เดือน/ปี%d/%m/%Y30/04/2020
วัน เดือน ปี (ไทย)%d %M %Y30 April 2020
วันที่/เวลา%d-%m-%Y %H:%i:%s30-04-2020 14:30:05

ใช้ใน UPDATE (เก็บเป็น VARCHAR)

UPDATE demo80
SET due_date_str = DATE_FORMAT(due_date, '%d-%m-%Y');

ประสิทธิภาพ

  • DATE_FORMAT ใช้ CPU ค่อนข้างมาก — หลีกเลี่ยงใน WHERE Clause
  • WHERE ใช้ Date Comparison โดยตรง: WHERE due_date = '2020-04-30'
  • SELECT เท่านั้น: OK สำหรับรายงาน/แสดงผล

MySQL 8.0: TO_CHAR() Alias

SELECT TO_CHAR(due_date, 'DD-MM-YYYY') FROM demo80;  -- Oracle Syntax Compatibility