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

Conversion entre des dates au format illogique (changement de /slash/ en -dash- )

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

Ou mieux encore, modifiez simplement les données dans la base de données :

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

... puis convertissez le champ en type DATE.

---- MODIFIER ----

En fait, le colonel Shrapnel a raison ... J'avais oublié le fait que la date doit également être inversée, donc c'est AAAA-MM-JJ ; en supposant que la date d'origine est au format JJ/MM/AAAA, une meilleure requête pourrait ressembler à :

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

Ce qui inversera les composants en une chaîne pouvant être convertie en DATE ... cela ne fonctionnera pas tout à fait si la chaîne de date d'origine n'utilise pas de zéros non significatifs 1/6/2011 par exemple... il faudrait faire quelque chose d'un peu plus intelligent dans ce cas.