Разгледайте 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)