Ik heb een aantal datums opgeslagen in mijn database, nu staan deze wegens slecht programmeren in een varchar datatype veld. Aangezien er nu ook gerekend moet worden met deze datums wil ik het graag omzetten naar het daarvoor bedoelde datatype date. Het probleem waar ik echter tegenaan loop is dat de datums opgeslagen zijn in het dd-mm-yyyy formaat, en zodra ik er een date veld van maakt wordt dit 0000-00-00.
Volgens mij moet ik dus eerst het formaat in yyyy-mm-dd zetten, en daarna pas het datatype aanpassen om de originele datums te behouden.
Alleen ik kom er niet helemaal uit hoe ik dit netjes kan doen, wat ik heb geprobeerd:
Nu werkt dit wel, maar volgens mij is het niet echt een nette manier, dus heb ik gekeken of het ook alleen met behulp van MySQL kon toen kwam ik op het volgende uit:
De query wordt succesvol uitgevoerd, maar vervolgens staat er in elk veld NULL, niet het gewenste resultaat dus. Kunnen jullie me misschien vertellen hoe ik dit het beste kan oplossen?
Volgens mij moet ik dus eerst het formaat in yyyy-mm-dd zetten, en daarna pas het datatype aanpassen om de originele datums te behouden.
Alleen ik kom er niet helemaal uit hoe ik dit netjes kan doen, wat ik heb geprobeerd:
PHP:
1
2
3
4
5
6
7
8
9
10
| $database = new Database(); // Dit is mijn database class en zorgt voor de database functies. $sql = "SELECT `ID`,`datum` FROM `logboek`"; foreach($database->Select($sql) as $item) { $date = explode("-",$item["datum"]); $newdate = $date[2] . "-" . $date[1] . "-" . $date[0]; $sql = "UPDATE `logboek` SET `datum`='" . $newdate . "' WHERE `ID`='" . $item["ID"] . "'"; $database->Query($sql); } |
Nu werkt dit wel, maar volgens mij is het niet echt een nette manier, dus heb ik gekeken of het ook alleen met behulp van MySQL kon toen kwam ik op het volgende uit:
MySQL:
1
| UPDATE logboek SET `datum` = DATE_FORMAT(`datum`,'%Y-%m-%d'); |
De query wordt succesvol uitgevoerd, maar vervolgens staat er in elk veld NULL, niet het gewenste resultaat dus. Kunnen jullie me misschien vertellen hoe ik dit het beste kan oplossen?