Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Converter string/varchar para data entre tabelas MySQL


Dê uma olhada em STR_TO_DATE função:
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

E então a mesma consulta, com formato de data como '%m/%d/%Y' , e novamente com '%M %D, %Y' .Se o formato não corresponder, STR_TO_DATE retornará NULL e as linhas não serão atualizadas.

Se você deseja inserir seus dados existentes em uma nova tabela, você pode usar algo assim:
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 é uma coluna de data e você pode formatar como quiser usando PHP ou DATE_FORMAT)