sql >> Databasteknik >  >> RDS >> Mysql

Konvertera mellan ologiskt formaterade datum (ändrar /slash/ till -dash- )

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

Eller ännu bättre - ändra bara data i databasen:

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

... och konvertera sedan fältet till skriv DATUM.

---- REDIGERA ----

Egentligen har överste Shrapnel en poäng... Jag hade förbisett det faktum att datumet också måste vändas så det är ÅÅÅÅ-MM-DD; antar att det ursprungliga datumet är i formatet DD/MM/ÅÅÅÅ kan en bättre fråga vara något i stil med:

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

Vilket kommer att vända komponentdelarna till en sträng som kan konverteras till ett DATUM ... det fungerar inte riktigt om den ursprungliga datumsträngen inte använder inledande nollor 1/6/2011 till exempel... skulle behöva göra något lite smartare i så fall.



  1. Hur uppdaterar jag på cascade i MySQL?

  2. SQL Buddy – ett webbaserat MySQL-administrationsverktyg

  3. Ställa in nätverkstidsgräns för JDBC-anslutning

  4. Hur man kontrollerar om posten finns med Python MySQdb