sql >> Database >  >> RDS >> Mysql

Converteren tussen onlogisch opgemaakte datums (veranderen /slash/ naar -dash- )

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

Of beter nog - verander gewoon de gegevens in de database:

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

... en converteer het veld vervolgens naar het type DATE.

---- BEWERKEN ----

Eigenlijk heeft kolonel Shrapnel een punt ... Ik had over het hoofd gezien dat de datum ook moet worden omgedraaid, dus het is JJJJ-MM-DD; ervan uitgaande dat de oorspronkelijke datum de indeling DD/MM/YYYY heeft, kan een betere zoekopdracht zoiets zijn als:

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

Wat de samenstellende delen zal omkeren in een string die kan worden geconverteerd naar een DATE ... het zal niet helemaal werken als de originele datumstring geen voorloopnullen gebruikt 1/6/2011 bijvoorbeeld... zou in dat geval iets slimmer moeten doen.



  1. Oracle Wait-gebeurtenissen die iedereen zou moeten weten

  2. CSV-bestand uploaden om statusupdate af te handelen en nieuwe records in te voegen

  3. WinDeath op notifyDataSetChanged()

  4. MariaDB Flashback gebruiken op een MySQL-server