Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chuyển đổi định dạng ngày dd.mm.yyyy sang YYYY-MM-DD trong MySQL

Để chuyển đổi ngày từ định dạng dd.mm.yyyy sang YYYY-MM-DD trong MySQL, bạn sử dụng hàm STR_TO_DATE() kết hợp với DATE_FORMAT().

Cú pháp

-- Cách 1: Chỉ dùng STR_TO_DATE (trả về kiểu DATE)
SELECT STR_TO_DATE(ten_cot_ngay, '%d.%m.%Y') AS ngay_chuan FROM ten_bang;

-- Cách 2: Dùng DATE_FORMAT để đảm bảo định dạng chuỗi đầu ra
SELECT DATE_FORMAT(STR_TO_DATE(ten_cot_ngay, '%d.%m.%Y'), '%Y-%m-%d') AS ngay_chuan FROM ten_bang;

Các định dạng (format specifiers)

Ký hiệuÝ nghĩa
%dNgày (01-31)
%mTháng (01-12)
%YNăm 4 chữ số (2024)
%yNăm 2 chữ số (24)

Ví dụ minh họa

1. Tạo bảng kiểm thử

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

2. Chèn dữ liệu mẫu

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');

3. Xem dữ liệu gốc

SELECT * FROM ConvertIntoDateFormat;

Kết quả:

+----+------------+
| Id | LoginDate  |
+----+------------+
| 1  | 11.01.2019 |
| 2  | 10.04.2017 |
| 3  | 21.10.2016 |
| 4  | 26.09.2018 |
| 5  | 25.12.2012 |
+----+------------+

4. Chuyển đổi định dạng

-- Cách 1
SELECT STR_TO_DATE(LoginDate, '%d.%m.%Y') AS DateFormat FROM ConvertIntoDateFormat;

-- Cách 2 (khuyên dùng để đảm bảo định dạng chuỗi)
SELECT DATE_FORMAT(STR_TO_DATE(LoginDate, '%d.%m.%Y'), '%Y-%m-%d') AS DateFormat 
FROM ConvertIntoDateFormat;

Kết quả (cả hai cách):

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

Lưu ý quan trọng

  • STR_TO_DATE() chuyển chuỗi thành kiểu DATE/DATETIME
  • DATE_FORMAT() chuyển kiểu ngày thành chuỗi theo định dạng chỉ định
  • Nên dùng cách 2 nếu cần kết quả là chuỗi có định dạng chính xác YYYY-MM-DD
  • Nếu dữ liệu gốc đã là kiểu DATE, chỉ cần dùng DATE_FORMAT()