Jak zapsat datum

Do čeho mám prosím zapsat datum vrácený mktime()? INT, VARCHAR, DATETIME nebo něco jinýho?
mktime() vraci unix timestamp, takze jedine int. na datetime bys to myslim musel prevest na citelejsi tvar (neco jako dd-mm-yy - viz mysql manual). varchar je uplna blbost
Poloz si otazku. Co vraci funkce mktime()?

mktime() vraci cas v unix formatu. Coz je cislo v sekundach pocitajici se od 1.1.1970. V soucasne dobe je to deseticiferne celociselne cislo.
Takze odpoved zni. Ukladat v datovem typu INT.
Já nevím, ale já bych využil toho, že MySQL umí s daty skoro čarovat, proto bych datum ukládal do typu TIMESTAMP a vytahoval bych jej jako formátovaný řetězec...
Díky, budu používat int, jen jsem se chtěl ujistit, protože jsem myslim někde slyšel že se to ukládá do long int, to ani nevim že existuje :) to varchar byl jen příklad abyste mě pochopili :)

Díky všem :)
Zbynas datum bych urcite konvertoval do datetiem, prtoze pak jej muzes snadno upravovat pres phpadmina a nemas tam zahadne nic nerikajici cislo. Ikdyz je to trosku zateze navic, ale za to to stoji.
Já osobně to používám jak kdy, někdy unix timestamp v INT, někdy DATETIME. S tim unix timestampem se mi pak vela líp pracuje v PHP, DATETIME má zase výhody při prací s DB. BTW. Nemáte někdo tip, jak rozumně převést sql datetime na unix timestamp a naopak? Mam na to vlastní funkce, ale říkal jsem si, jestli třeba něco na ten způsob neumí PHP nebo MYSQL rovnou...
BTW. ěště jedna výhoda DATETIME: není omezeno na UNIX time (tedy >=1.1.1970), což se třeba využije, pokud jsou to data narození; kamarádi jsou v pohodě, ale máme taky třeba rodiče že, s těma se přes unix timestamp pracovat nedá - mysql by sice umělo INT i s mínusem, ale PHP to neskousne. Takže tam pak i v PHP pracuju s tim SQL formátem data.
strtotime(), ale je tam prave to omezeni s unix time 1.1.1970

"mysql by sice umělo INT i s mínusem, ale PHP to neskousne"
pochopitelne. Unix cas nemuzes mit mensi nez 0s. Ale pak se s tim neda samozrejme pracovat s datumem narozeni pred 1970.
Takze zustan u vlastni funkce
<HTML><b>z datetime do timestampu:</b>

mysql> SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2005-03-27 02:00:00') |
+---------------------------------------+
| 1111885200 |
+---------------------------------------+

<b>z timestampu do datetime:</b>

mysql> SELECT FROM_UNIXTIME(1111885200);
+---------------------------+
| FROM_UNIXTIME(1111885200) |
+---------------------------+
| 2005-03-27 03:00:00 |
+---------------------------+</HTML>
Richard:
díky moc, přesně tohle jsem chtěl! :-)

peta:
"pochopitelne. Unix cas nemuzes mit mensi nez 0s"
No to jsem se všim, ale to je dáno jen jakousi dohodou, ne že by to technicky nešlo. Prostě by docela dobře mohla být dohoda, že absolutní hodnota unix time je počet sekund od 1.1.1970 00:00:00 a znaménko udává, kterým směrem - kladné->ve směru toku času, záporné -> proti směru toku času. Potom bych měl třeba čas -86400, což by bylo 31.12.1969 00:00:00 :-)
R.U.R. (jsrosa.wz.cz)
Nemohlo. U datoveho typu 0..neco nejde nastavit zapornou hodnotu. Leda prepsat vsechny funkce, viz tva funkce. Mam pocit, ze Richardova SQL funkce se chova podobne jako strtotime / date.
Kazdopadne nejsi jediny, koho to stve a proste nezadas rok 2.000.000 let pred kristem :)

Ve skutecnosti slo o to, aby se usetrilo na soucastkach. 1 citac - 8 bitu, ...
a jestli jsi mel logicke obvody, tak tam se jeste pouzivaji ty obri soucastky a v te dobe takovou soucastku napajet pro nic za nic, kdyz cas se bude pocitat stejne rok 1970, 1971 ...
Ze by nekdo chtel pouzivat casove funkce pro datumy narozeni, to je fakt nenapadlo.
Bude mozna obtizne presvedcit vyvojare PHP, aby zmenili princip funkce. (z historickych duvodu, programy prestanou behat)
<HTML>Nerekl bych ze je to nenapadlo, spis bych to videl jako vynalez pro ucelove pouziti. Pouzivalo se to napr. v DOSu u datumu souboru aby se usetril kazdy potrebny bit a ucel jako takovy se da specifikovat na pouziti pri praci s aktualnim casem/datumem a jejich operacemi. Od uchovavani datumu za ucelem historicka udalost, kartoteka dat apd. jsou tu jine moznosti.</HTML>
Souhlasim s Richardem. Unixtime je tu od toho, aby se pracovalo se soucasnym casem. Pro archivace a tak, kde se ocekava datum pred 1970, se pouzivaji jine metody.
Jj, toe mi jasný a souhlasím, jen je škoda, že na tyhle "jiné metody" nejsou v PHP rozumné funkce, ba ani datové typy ;-) Že.
<HTML>imho v php na to jsou funkce natolik rozumne jak to jen jde</HTML>
R.U.R. (jsrosa.wz.cz)
- Jak casto se pracuje s datumem narozeni, pokud nepocitas vek uzivatele?
- Pokud ulozis nekde datum, jako bys ulozil i rodne cislo, protoze ceske rodne cislo je delitelne 11. Spousta systemu je heslovana rodnym cislem.
- ve vyjimecnych situacich se pocita take rozdil datumu

Cili strankam, kde se uklada datum narozeni, bych se z daleka vyhybal, pokud je to jako povinna polozka.
Ale myslim si, ze by to mohla byt php funkce. Jsou tam spousty jinych, ktere se temer nepouzivaji :)
Vzhledem k tomu, že máme jazykovou školu a mám na starosti školní databázi a administrační systém (php+mysql), ve kterém jsou mimo jiné data o žácích, tak s jejich daty pracuji často, tedy i daty narození. Je to jednak různé počítání s jejich věkem, jednak práce s daty narození jako takovými... prostě je to občas potřeba. No a to málo co PHP nabízí (zejména fce date) je nepoužitelné pro lidi straší 37 let, takže pak nezbývá než s datem pracovat jako s velkým číslem nebo řetězcem nebo vlastnoručně vytvořeným objektem, pomocí vlastnoručně vytvořených funkcí... Chápu že unixtime je z historických důvodů unsigned integer, ale přesto mi chybí nějaká rozumná implementace dat před 1.1.1970 - jak říká peta, php má lecjaké funkce, které jsou používány jen okrajově (použili jste někdy třeba UCWords()? >:-) Já ani UCFirst()...), tak proč není něco na datum.