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

เปลี่ยนรูปแบบวันที่ในคอลัมน์ MySQL ด้วย DATE_FORMAT

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1906 (DueTime DATETIME);

mysql> INSERT INTO DemoTable1906 VALUES(NOW()), (CURDATE()), 
    ('2017-10-11'), ('2015-01-12'), ('2018-04-25');

ข้อมูลดิบ

+---------------------+
| DueTime             |
+---------------------+
| 2019-12-11 13:54:22 |
| 2019-12-11 00:00:00 |
| 2017-10-11 00:00:00 |
| 2015-01-12 00:00:00 |
| 2018-04-25 00:00:00 |
+---------------------+

เปลี่ยนรูปแบบเป็น DD-MM-YYYY

mysql> SELECT DATE_FORMAT(DueTime, '%d-%m-%Y') FROM DemoTable1906;

ผลลัพธ์:

+---------------------------------+
| date_format(DueTime,'%d-%m-%Y') |
+---------------------------------+
| 11-12-2019                      |
| 11-12-2019                      |
| 11-10-2017                      |
| 12-01-2015                      |
| 25-04-2018                      |
+---------------------------------+

Format Specifiers ทั้งหมด

Specifierความหมายตัวอย่าง
%Yปี 4 หลัก2019
%yปี 2 หลัก19
%mเดือน 01-1212
%cเดือน 1-1212
%dวัน 01-3111
%eวัน 1-31 (Space Pad)11
%Hชั่วโมง 00-2313
%hชั่วโมง 01-1201
%iนาที 00-5954
%sวินาที 00-5922
%Wชื่อวันเต็มWednesday
%Mชื่อเดือนเต็มDecember
%bชื่อเดือนย่อDec

รูปแบบทั่วไป

-- Thai Display
DATE_FORMAT(date, '%d/%m/%Y')        -- 11/12/2019
DATE_FORMAT(date, '%d %M %Y')        -- 11 December 2019
DATE_FORMAT(date, '%W, %d %M %Y')    -- Wednesday, 11 December 2019

-- ISO Format
DATE_FORMAT(date, '%Y-%m-%d')        -- 2019-12-11
DATE_FORMAT(date, '%Y-%m-%d %H:%i:%s') -- 2019-12-11 13:54:22

-- Time Only
DATE_FORMAT(date, '%H:%i')           -- 13:54
DATE_FORMAT(date, '%h:%i %p')        -- 01:54 PM

อัปเดตข้อมูลจริง (เปลี่ยน Type เป็น VARCHAR)

-- เพิ่มคอลัมน์ใหม่
ALTER TABLE DemoTable1906 ADD COLUMN DueTimeFormatted VARCHAR(20);
UPDATE DemoTable1906 SET DueTimeFormatted = DATE_FORMAT(DueTime, '%d-%m-%Y');

-- หรือสร้าง View
CREATE VIEW v_DemoTable1906 AS
SELECT *, DATE_FORMAT(DueTime, '%d-%m-%Y') AS DueTimeFormatted
FROM DemoTable1906;

ข้อควรระวัง

  • DATE_FORMAT คืนค่า String (VARCHAR) ไม่ใช่ Date Type
  • ไม่สามารถคำนวณ Date ได้อีก (ต้องแปลงกลับ STR_TO_DATE)
  • Sorting String Date: ใช้ Format YYYY-MM-DD เท่านั้น
  • Timezone: DATE_FORMAT ใช้ Session Timezone