Autor Zpráva
Tomik
Profil
Mám malinkatý problém :
Mám v MySQL uloženy dva datumy (např. "2004-01-05" a "2004-01-21") a potřebuji zjistit kolik dnů je mezi nimi rozdíl, ale jelikož v PHP není proměnná typu date nelze od sebe ty datumy odečíst.
V Pascalu je proměnná typu date, lze tak datumy sčítat a odečítat.

Děkuji za odpovědi.
Honza Hučín
Profil
PHP to neumí, ale MySQL ano. Podívej se na
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
Například funkce unix_timestamp nebo datediff by mohly řešit tvůj problém.
Tomik
Profil
Díky moc. Jo a ještě jsem se chtěl zeptat jestli není v PHP (případně v MySQL) nějaká funkce, která datum (např. 2004-01-05) převede na dny (myslím tím jenom dny něco jako sekundy od roku 1970).
Tomik
Profil
To Honza Hučín : Omlouvám se, ale chtěl bych se zeptat když např. SQL příkaz SELECT UNIX_TIMESTAMP provedu v MySQL_query jak dostanu odpověď toho příkazu do nějaké proměnné?

Dík za odpověď.
Wan-To
Profil *
Můžeš si time() vydělit počtem sekund za den, takže 86400 s.
Honza Hučín
Profil
Ad Tomík: UNIX_TIMESTAMP ti to dá v sekundách, pak to vydělíš 86400. Na druhou otázku jsem odpověděl v příslušném tématu, které jsi založil.
Tomik
Profil
Díky
Lemur
Profil *
Pokud je třeba, aby MySQL vrátilo jenom něco, tj. zaznámy v určitem casovém období, je lepši to nacpat přímo do selectu. A datumy je opravdu lepši mít jako timestamp, protože zaprvé se s nima lépe pracuje a take zabírají mín místa (jen mě trochu děsí Y2K38, jen doufám, ze v tý době budou všude 64bity). A pokud se v updatu položky co jsou timestamp neuvedou, MySQL do nich hodí aktualni čas updatu (tedy pokud se něco mění, tj. afected rows není 0). Takze výsledny selekt muze vypadat těeba takle:

select date_format(ts,'%d. %m.%%Y') as datum, date_format(ts,'%H:%i:%s') as cas, polozka from tabulka where unix_timestamp(ts)>(unix_timestamp()-86400) order by ts desc

Talhe query vypíse položky z tabulky tabulka, ktera má prvky ts (timestamp) a položka (jedno co), které nejsou starší než 24 hodin (86400 sekund), tak, že v query vráti hezky naformátované datum, čas a položku, takže se nic nemusi prevádět, no a ješte je to setřidi tak, ze první je nejmladší.
Toto téma je uzamčeno. Odpověď nelze zaslat.