Vždy jsem si čas do databáze ukládal do datového typu int z php funkce Time() a přemýšlím, zda to není špatně, když je tam možnost Date and time. Jaké výhody a nevýhody mají tyto možnosti?
díky :-)
Vždy jsem si čas do databáze ukládal do datového typu int z php funkce Time() a přemýšlím, zda to není špatně, když je tam možnost Date and time. Jaké výhody a nevýhody mají tyto možnosti?
díky :-)
Gogy27 poptává: Skript na vyhladavanie z databazy
Musla poptává: Přepis projektu z CodeIgniter do Yii
Lukyn88 poptává: Nakódování webu z PSD
Jen narychlo jedna výhoda:
s časem uloženým ve formátu Date (and time) je možno pracovat již na úrovni databáze.
Muzes pak pouzivat funkce na pricitani dnu a nemusis resit, zda je prestupny rok apod.
Určitě používejte datový typ určený pro datum/čas. Vyřeší za vás spoustu věcí, jako časové zóny, manipulace, kontrolu validního data.
Nevýhodu to nemá žádnou.
Viz MySQL: Date and Time Types
Dřív sem jako ID používal právě hodnotu funkce Time(), protože se z toho dal dostat také čas. Doporučuju ale date and time
Unixtime:
+ je to integer
+ DB operace s ním jsou rychlejší
+ spousta funkcí s ním nativně pracuje
+ přenositelnost mezi platformami (v podstatě všichni na všech platformách rozumí unixtime a mají pro něj přinejmenším hotovou konverzní funkci)
+ triviálně se posouvá o reálné časové úseky
+ ideální výchozí tvar pro zformátování do výstupu
- neřeší časové zóny (a ani letní čas)
- hůř se posouvá o umělé časové úseky jako měsíc nebo rok
- pro data s rokem méně než 1970 se musí používat signed int (záporné hodnoty), pro letopočty mimo rozsah 1901-2038 je pak už potřeba více než 32bitový integer.
Osobně používám výhradně unixtime. Nezpochybňuji výhody "chytrých" datových typů, ale na nevýhody unixtime v praxi narážím jen vzácně, takže jsem s tím spokojen.