Podívejte se na STR_TO_DATE funkce:
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
A pak stejný dotaz s formátem data jako '%m/%d/%Y'
a poté znovu pomocí '%M %D, %Y'
.Pokud se formát neshoduje, STR_TO_DATE vrátí NULL a řádky nebudou aktualizovány.
Pokud si přejete vložit svá stávající data do nové tabulky, můžete použít něco takového:
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 je sloupec s datem a poté můžete formátovat, jak chcete, pomocí PHP nebo pomocí DATE_FORMAT)