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

Konvertering mellem ulogisk formaterede datoer (ændre /slash/ til -dash-)

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

Eller endnu bedre - bare skift dataene i databasen:

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

... og konverter derefter feltet til at skrive DATE.

---- REDIGER ----

Egentlig har oberst Shrapnel en pointe... Jeg havde overset det faktum, at datoen også skal vendes, så det er ÅÅÅÅ-MM-DD; forudsat at den oprindelige dato er i formatet DD/MM/ÅÅÅÅ kan en bedre forespørgsel være noget som:

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

Hvilket vil vende komponentdelene til en streng, der kan konverteres til en DATO ... det vil ikke helt fungere, hvis den originale datostreng ikke bruger indledende nuller 1/6/2011 for eksempel... ville være nødt til at gøre noget lidt smartere i så fald.



  1. Sådan ændres max_allowed_packet size

  2. OPDATERING Samme række efter OPDATERING i Trigger

  3. Bestil flere kolonner ASC

  4. Mysql:Bestil efter like?