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

Convertendo entre datas formatadas de forma ilógica (alterando /slash/ para -dash- )

$start_date = date('Y-m-d', strtotime(str_replace('/', '-', $query->row('startdate'))));

Ou melhor ainda - basta alterar os dados no banco de dados:
UPDATE `table` SET `startdate` = REPLACE(`startdate`, '/', '-');

... e, em seguida, converta o campo para o tipo DATE.

---- EDITAR ----

Na verdade, o coronel Shrapnel tem razão... Eu tinha esquecido o fato de que a data também precisa ser revertida, então é AAAA-MM-DD; supondo que a data original esteja no formato DD/MM/AAAA, uma consulta melhor pode ser algo como:
UPDATE `table` SET `date` = CONCAT(SUBSTRING(`date`, 7), '-', SUBSTRING(`date`, 4, 2), '-', SUBSTRING(`date`, 1, 2))

O que reverterá as partes componentes em uma string que pode ser convertida em uma DATE ... não funcionará se a string de data original não usar zeros à esquerda 1/6/2011 por exemplo... precisaria fazer algo um pouco mais inteligente nesse caso.