sql >> Base de Datos >  >> RDS >> Mysql

Conversión entre fechas formateadas ilógicamente (cambiando /slash/ a -dash- )

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

O mejor aún, simplemente cambie los datos en la base de datos:

UPDATE `table` SET `startdate` = REPLACE(`startdate`, '/', '-');

... y luego convierta el campo para escribir FECHA.

---- EDITAR ----

En realidad, el Coronel Shrapnel tiene razón... Había pasado por alto el hecho de que la fecha también debe invertirse, por lo que es AAAA-MM-DD; suponiendo que la fecha original tiene el formato DD/MM/AAAA, una mejor consulta podría ser algo como:

UPDATE `table` SET `date` = CONCAT(SUBSTRING(`date`, 7), '-', SUBSTRING(`date`, 4, 2), '-', SUBSTRING(`date`, 1, 2))

Lo que invertirá las partes componentes en una cadena que se puede convertir en una FECHA... no funcionará del todo si la cadena de fecha original no usa ceros a la izquierda 1/6/2011 por ejemplo... necesitaría hacer algo un poco más inteligente en ese caso.