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

แปลงรูปแบบวันที่ dd.mm.yyyy เป็น YYYY-MM-DD ใน MySQL

การแปลงรูปแบบวันที่ด้วย STR_TO_DATE และ DATE_FORMAT

MySQL มีฟังก์ชัน STR_TO_DATE() สำหรับแปลงสตริงเป็นวันที่ และ DATE_FORMAT() สำหรับจัดรูปแบบวันที่ให้เป็นรูปแบบที่ต้องการ

ไวยากรณ์

-- แปลงสตริง dd.mm.yyyy เป็น DATE
SELECT STR_TO_DATE(yourDateColumn, '%d.%m.%Y') FROM yourTableName;

-- แปลงแล้วจัดรูปแบบเป็น YYYY-MM-DD
SELECT DATE_FORMAT(STR_TO_DATE(yourDateColumn, '%d.%m.%Y'), '%Y-%m-%d') FROM yourTableName;

ตัวอย่างการใช้งาน

สร้างตารางทดสอบ:

CREATE TABLE ConvertIntoDateFormat (
    Id INT NOT NULL AUTO_INCREMENT,
    LoginDate VARCHAR(30),
    PRIMARY KEY(Id)
);

เพิ่มข้อมูลทดสอบ:

INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('11.01.2019');
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('10.04.2017');
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('21.10.2016');
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('26.09.2018');
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('25.12.2012');

แปลงรูปแบบวันที่:

SELECT STR_TO_DATE(LoginDate, '%d.%m.%Y') AS DateFormat FROM ConvertIntoDateFormat;

ผลลัพธ์:

+------------+
| DateFormat |
+------------+
| 2019-01-11 |
| 2017-04-10 |
| 2016-10-21 |
| 2018-09-26 |
| 2012-12-25 |
+------------+

ใช้ DATE_FORMAT ร่วมกับ (เพื่อความชัดเจนหรือรูปแบบอื่น):

SELECT DATE_FORMAT(STR_TO_DATE(LoginDate, '%d.%m.%Y'), '%Y-%m-%d') AS DateFormat 
FROM ConvertIntoDateFormat;

รหัสรูปแบบวันที่ (Format Specifiers)

รหัสความหมายตัวอย่าง
%dวัน (00-31)11
%mเดือน (00-12)01
%Yปี 4 หลัก2019
%yปี 2 หลัก19
%bชื่อเดือนย่อJan
%Mชื่อเดือนเต็มJanuary

หมายเหตุ

  • เก็บวันที่ในคอลัมน์ประเภท DATE หรือ DATETIME แทน VARCHAR เพื่อประสิทธิภาพและความถูกต้อง
  • STR_TO_DATE จะคืนค่า NULL หากรูปแบบไม่ตรงกัน