Mysql
 sql >> Database >  >> RDS >> Mysql

Conversione tra date formattate in modo illogico (cambiando /slash/ in -dash- )

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

O meglio ancora, basta modificare i dati nel database:

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

... e quindi convertire il campo nel tipo DATE.

---- MODIFICA ----

In realtà, il colonnello Shrapnel ha ragione... avevo trascurato il fatto che anche la data deve essere invertita, quindi è AAAA-MM-GG; supponendo che la data originale sia nel formato GG/MM/AAAA, una query migliore potrebbe essere qualcosa del tipo:

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

Il che invertirà le parti componenti in una stringa che può essere convertita in DATE ... non funzionerà del tutto se la stringa della data originale non utilizza zeri iniziali 1/6/2011 per esempio... dovrebbe fare qualcosa di un po' più intelligente in quel caso.