Změna unix timestamp na date v MySQL
Napsáno dne 27. Listopad 2009
Možná jste už museli někdy řešit své hříchy z mládí. Když jsem začínal, vytvořil jsem systém a navrhl databázi. Bohužel, tehdy jsem databázím vůbec nerozuměl a v PHP jsem zběhlý nebyl.
Tehdy jsem vymyslel, že budu do databáze ukládat data v unix timestampu, tedy číslo od 1.1.1970. A při každé komunikaci s uživatelem jsem jej pomocí funkce Date().
Nyní jsem začal předělávat stávající návrh a potřeboval jsem převést tyto špatné datumy v DB na klasický datový typ date, případně datetime.
Nejdříve jsem si vytvořil dočasný sloupeček s požadovaným typem date. Následoval SQL příkaz:
UPDATE tabulka SET temp_datum = FROM_UNIXTIME(datum) ;
A pak bylo nutné původní datum předělat na datový typ date. Tohle jsem vyřešil smazáním a následným novým vložením. Pokud někdo znáte lepší metodu, prosím podělte se o ni.
A pak už jsem následovalo nakopírování nové hodnoty z temp_datum:
UPDATE tabulka SET datum = temp_datum;
Těch neduhů je v databázi víc, časem se o ně třeba podělím. Jaké neduhy máte vy?