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

Chuyển đổi ngày không đúng định dạng trong MySQL?

Chuyển chuỗi ngày tháng tùy ý sang DATE/DATETIME trong MySQL

Sử dụng STR_TO_DATE() với format string phù hợp để parse chuỗi ngày không chuẩn thành DATE/DATETIME.

Cú pháp

SELECT STR_TO_DATE(yourDateString, 'format_string') FROM yourTable;

Ví dụ: Định dạng "Tháng Ngày Năm" (April 04 2019)

Tạo bảng (cột VARCHAR):

mysql> CREATE TABLE convertDateDemo (AdmissionDate VARCHAR(200));

Chèn dữ liệu:

mysql> INSERT INTO convertDateDemo VALUES
('April 04 2019'), ('May 05 2018'), ('January 01 2012'), ('June 12 2016');

Dữ liệu gốc:

+-----------------+
| AdmissionDate   |
+-----------------+
| April 04 2019   |
| May 05 2018     |
| January 01 2012 |
| June 12 2016    |
+-----------------+

Chuyển đổi (format: %M %e %Y):

mysql> SELECT STR_TO_DATE(AdmissionDate, '%M %e %Y') AS ConvertDate FROM convertDateDemo;

Kết quả (DATETIME với giờ 00:00:00):

+---------------------+
| ConvertDate         |
+---------------------+
| 2019-04-04 00:00:00 |
| 2018-05-05 00:00:00 |
| 2012-01-01 00:00:00 |
| 2016-06-12 00:00:00 |
+---------------------+

Các format specifier phổ biến

SpecifierÝ nghĩaVí dụ
%MTên tháng đầy đủJanuary, April
%bTên tháng viết tắtJan, Apr
%mTháng 2 chữ số01, 04
%dNgày 2 chữ số04, 12
%eNgày (1-2 chữ số, có space)4, 12
%YNăm 4 chữ số2019
%yNăm 2 chữ số19
%H:%i:%sGiờ:Phút:Giây 24h14:30:45
%h:%i:%s %pGiờ:Phút:Giây 12h AM/PM02:30:45 PM

Ví dụ các định dạng khác

  • '%d/%m/%Y' → "31/12/2023"
  • '%Y-%m-%d %H:%i:%s' → "2023-12-31 23:59:59"
  • '%W, %M %d, %Y' → "Sunday, December 31, 2023"
  • '%d-%b-%Y' → "31-Dec-2023"

Lưu ý

  • Format string phải khớp chính xác dữ liệu (khoảng trắng, dấu phân cách)
  • Trả về NULL nếu parse thất bại
  • Dùng DATE(STR_TO_DATE(...)) nếu chỉ cần DATE
  • MySQL 8.0: Có thể dùng CAST(... AS DATE) cho một số định dạng chuẩn