Tag et kig 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
Og så den samme forespørgsel med datoformat som '%m/%d/%Y'
, og derefter igen med '%M %D, %Y'
.Hvis formatet ikke stemmer overens, returnerer STR_TO_DATE NULL, og rækker vil ikke blive opdateret.
Hvis du ønsker at indsætte dine eksisterende data i en ny tabel, kan du bruge noget som dette:
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
(ny_kolonne er en datokolonne, og du kan derefter formatere, som du vil ved hjælp af PHP eller ved at bruge DATE_FORMAT)