Mysql
 sql >> Base de données >  >> RDS >> Mysql

Convertir string/varchar à ce jour entre les tables MySQL

Jetez un oeil à STR_TO_DATE fonction :

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

Et puis la même requête, avec le format de date comme '%m/%d/%Y' , puis à nouveau avec '%M %D, %Y' .Si le format ne correspond pas, STR_TO_DATE renverra NULL et les lignes ne seront pas mises à jour.

Si vous souhaitez insérer vos données existantes dans une nouvelle table, vous pouvez utiliser quelque chose comme ceci :

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 est une colonne de date, et vous pouvez ensuite formater comme vous le souhaitez en utilisant PHP ou en utilisant DATE_FORMAT)