Hãy xem STR_TO_DATE chức năng:
UPDATE yourtable
SET
new_column = STR_TO_DATE(varchar_date, '%m-%d-%Y')
WHERE
STR_TO_DATE(varchar_date, '%m-%d-%Y') IS NOT NULL
Và sau đó là cùng một truy vấn, với định dạng ngày là '%m/%d/%Y'
, và sau đó lặp lại với '%M %D, %Y'
.Nếu định dạng không khớp, STR_TO_DATE sẽ trả về NULL và các hàng sẽ không được cập nhật.
Nếu bạn muốn chèn dữ liệu hiện có của mình vào một bảng mới, bạn có thể sử dụng một cái gì đó như sau:
INSERT INTO new_table (ID, col1, col2, new_column)
SELECT
ID, col1, col2,
COALESCE(STR_TO_DATE(varchar_date, '%m-%d-%Y'),
STR_TO_DATE(varchar_date, '%m/%d/%Y'),
STR_TO_DATE(varchar_date, '%M %D, %Y'))
FROM oldtable
(new_column là cột ngày tháng và sau đó bạn có thể định dạng theo cách bạn muốn bằng PHP hoặc sử dụng DATE_FORMAT)