Datum ‚0000–00–00‘ se mi vypisuje v inputu jako ‚-0001–11–30‘
- Tomáš Brchaň
- Člen | 13
Poslední nette 2.0.7 na PHP5.3.
Uložím záznam do db, je to prázdné datum, teakže se správně uloží jako
‚0000–00–00‘. Potom jej vytáhnu znovu do formuláře pro editaci a mám
tam nesmyslný ‚-0001–11–30‘. Kdyby to byla hodina, tak hledám
v nastavení časové zóny, ale proč je tam o měsíc méně? Máte někdo
tušení, kde může být chyba?
Hlídám si to podmínkou ($hodnota > ‚0000–00–00‘) a funguje, ale ještě jsem to neviděl. Ostatní datumy jako ‚2013–01–04‘ se mi nijak neposunují.
- Nox
- Člen | 378
Protože rok 0 ani měsíc 0 ani den 0 neexistují (a ta podmínka není dobrý způsob, řetězcové porovnání … jako datum se správně porovnávají jen instance DateTime, případně inty jako unix timestamp).
Pokud má být v jakémkoli typu záznamu prázdná hodnota, má se použít NULL, který je na takovou skutečnost přesně určený. Jak na straně PHP, tak na straně databáze.
Editoval Nox (1. 1. 2013 15:51)
- paranoiq
- Člen | 392
použij NULL – viz výše.
a aby někoho takové blbosti jako ukládat ‚0000–00–00‘ už nenapadaly, tak navrhuji v databázi nastavit trochu striktnější režim: http://dev.mysql.com/…ql-mode.html#…