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

Chuyển chuỗi ngày tháng định dạng dấu chấm (dd.mm.yyyy) sang DATE trong MySQL

Khi cột lưu ngày tháng dưới dạng chuỗi với dấu chấm phân cách (VD: '01.10.2019', '31.12.2018'), hàm STR_TO_DATE() cho phép chuyển đổi sang kiểu DATE chuẩn bằng cách chỉ định định dạng mẫu (format specifier).

Ví dụ minh họa

Tạo bảng cột VARCHAR:

mysql> CREATE TABLE DemoTable1445 (
    AdmissionDate VARCHAR(20)
);

Chèn dữ liệu định dạng dd.mm.yyyy:

mysql> INSERT INTO DemoTable1445 VALUES ('01.10.2019');
mysql> INSERT INTO DemoTable1445 VALUES ('31.12.2018');
mysql> INSERT INTO DemoTable1445 VALUES ('01.02.2017');

Dữ liệu gốc:

mysql> SELECT * FROM DemoTable1445;
+---------------+
| AdmissionDate |
+---------------+
| 01.10.2019    |
| 31.12.2018    |
| 01.02.2017    |
+---------------+

Chuyển đổi sang DATE với STR_TO_DATE

mysql> UPDATE DemoTable1445 
    SET AdmissionDate = STR_TO_DATE(AdmissionDate, '%d.%m.%Y');

Kết quả (cột vẫn là VARCHAR nhưng giá trị đã thành DATE chuẩn):

mysql> SELECT * FROM DemoTable1445;
+---------------+
| AdmissionDate |
+---------------+
| 2019-10-01    |
| 2018-12-31    |
| 2017-02-01    |
+---------------+

Giải thích định dạng '%d.%m.%Y'

Ký hiệuÝ nghĩaVí dụ
%dNgày (01-31)01, 31
.Ký tự dấu chấm chữ diện.
%mTháng 2 chữ số (01-12)02, 10, 12
%YNăm 4 chữ số2019, 2024

Lưu ý: Định dạng trong STR_TO_DATE phải khớp chính xác với dữ liệu (kể cả ký tự phân cách). Nếu dữ liệu có thể là '1.1.2019' (không padding 0), dùng '%e.%c.%Y' (%e ngày 1-2 chữ số, %c tháng 1-2 chữ số).

Các định dạng ngày thường gặp

Dữ liệu gốcFormat STR_TO_DATE
2019-10-01'%Y-%m-%d'
01/10/2019'%d/%m/%Y'
01-10-2019'%d-%m-%Y'
Oct 1, 2019'%b %e, %Y'
October 1, 2019'%M %e, %Y'
01.10.2019 14:30'%d.%m.%Y %H:%i'

Khuyến nghị tốt nhất

Sau khi chuyển đổi, hãy thay đổi kiểu cột sang DATE để đảm bảo toàn vẹn dữ liệu và hiệu năng:

ALTER TABLE DemoTable1445 MODIFY AdmissionDate DATE;