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

Cập nhật định dạng ngày tháng trong MySQL

Vấn đề

Cột VARCHAR lưu ngày sai format (YYYY-DD-MM), cần chuyển thành DATE chuẩn (YYYY-MM-DD).

Giải pháp: STR_TO_DATE()

Tạo bảng:

CREATE TABLE DemoTable630 (ArrivalDate VARCHAR(100));
INSERT INTO DemoTable630 VALUES
('2015-21-01'), ('2018-25-12'), ('2019-15-07'), ('2016-31-03');

Chuyển đổi (format: %Y-%d-%m → Year-Day-Month):

SELECT STR_TO_DATE(ArrivalDate, '%Y-%d-%m') FROM DemoTable630;

Kết quả:

+-------------------------------------+
| str_to_date(ArrivalDate, '%Y-%d-%m') |
+-------------------------------------+
| 2015-01-21                          |
| 2018-12-25                          |
| 2019-07-15                          |
| 2016-03-31                          |
+-------------------------------------+

Cập nhật vĩnh viễn (UPDATE)

-- Bước 1: Thêm cột DATE mới
ALTER TABLE DemoTable630 ADD COLUMN ArrivalDateFixed DATE;

-- Bước 2: Update dữ liệu
UPDATE DemoTable630
SET ArrivalDateFixed = STR_TO_DATE(ArrivalDate, '%Y-%d-%m');

-- Bước 3: Verify rồi drop cột cũ, rename cột mới

Các format specifier phổ biến

SpecifierÝ nghĩa
%YNăm 4 chữ số
%yNăm 2 chữ số
%mTháng (00-12)
%dNgày (00-31)
%HGiờ 24h (00-23)
%iPhút (00-59)
%sGiây (00-59)

Lưu ý

  • STR_TO_DATE là ngược của DATE_FORMAT.
  • Nếu chuỗi không khớp format → trả về NULL + Warning.
  • Luôn backup trước UPDATE hàng loạt.
  • Sau khi fix, hãy đổi cột sang kiểu DATE để đảm bảo tính toàn vẹn dữ liệu.