Kijk eens naar STR_TO_DATE functie:
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
En dan dezelfde zoekopdracht, met datumnotatie als '%m/%d/%Y'
, en dan opnieuw met '%M %D, %Y'
.Als de indeling niet overeenkomt, retourneert STR_TO_DATE NULL en worden de rijen niet bijgewerkt.
Als u uw bestaande gegevens in een nieuwe tabel wilt invoegen, kunt u zoiets als dit gebruiken:
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 is een datumkolom, en je kunt dan opmaken hoe je wilt met PHP of met DATE_FORMAT)