看一下STR_TO_DATE功能:
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
然后同样的查询,日期格式为'%m/%d/%Y'
,然后再次与'%M %D, %Y'
。
如果格式不匹配,STR_TO_DATE 将返回 NULL 并且行不会更新。
如果您希望将现有数据插入到新表中,可以使用如下内容:
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 是一个日期列,然后您可以使用 PHP 或使用 DATE_FORMAT 设置您想要的格式)