Importando um CSV para o MySQL com formato de data diferente

Estou fazendo minha primeira importação de CSV no MySQL e notei que a data no CSV tem o formato 31-Jan-2011 . Como posso converter isso para 2011-01-31 para que eu possa colocá-lo no tipo de dados DATE? A primeira coisa que veio à mente é deixar o PHP fazer a conversão, em seguida, inseri-lo em uma segunda tabela, mas eu estou supondo que isso … não está certo.

Você pode replace o formato durante a importação de dados do arquivo CSV, por exemplo –

 LOAD DATA INFILE 'file_name.csv' INTO TABLE table_name FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (id, column2, column3, @date_time_variable) -- read one of the field to variable SET date_time_column = STR_TO_DATE(@date_time_variable, '%d-%b-%Y'); -- format this date-time variable 

Ele formatará a string como ’31-Jan-2011 ‘para um tipo de dados DATETIME correto.

Mais informações aqui – LOAD DATA INFILE Syntax .

 mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%Y-%m-%d'); +------------------------------------------------+ | DATE_FORMAT('2009-10-04 22:23:00', '%Y-%m-%d') | +------------------------------------------------+ | 2009-10-04 | +------------------------------------------------+ 1 row in set (0.00 sec) 

Se o arquivo não for muito grande, carregue o CSV no Excel e use os comandos de formatação para alterar a representação da data.