Ta en titt på STR_TO_DATE funktion:
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
Och sedan samma fråga, med datumformat som '%m/%d/%Y'
, och sedan igen med '%M %D, %Y'
.Om formatet inte matchar returnerar STR_TO_DATE NULL och rader uppdateras inte.
Om du vill infoga dina befintliga data i en ny tabell kan du använda något i stil med detta:
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 är en datumkolumn, och du kan sedan formatera hur du vill med PHP eller med DATE_FORMAT)