Autor Zpráva
Peet
Profil
Dobrý den snažím se přijít na plně funkční způsob jak porovnat dva datumy uložené jako řetězce ve tvaru

dd.mm.yyyy

mám například datum 11.01.2012 a datum 03.05.2012

když je porovnám znaménkem je jasné že bude menší 03.05.2012

jak mohu převést řetězce do nějakého formátu který je bude porovnávat spráně..?


Nebo jest-li by mi někdo přesně poradil s následujícím do podrobna.:

v inputu odesílám datum ve tvaru dd.mm.yyyy ale do databáze bych ho chtěl uložit jako DATETIME a poté třeba vypisovat z databáze ty které jsou menší než dnešní datum...

byl bych moc rád za přesný postup ne za odkazy na dokumentaci.. předem děkuju všem
Nox
Profil
Udělal bych to jako (postup, ne možnosti)
1) explode(".", $promenna)
2) převedl to na DateTime / timestamp (mktime)
3) použil vestavěné metody/funkce PHP pro porovnání časů

Nejspíš podle toho co je ti bližší koukni buď na http://cz.php.net/manual/en/book.datetime.php nebo http://cz2.php.net/manual/en/ref.datetime.php
Tori
Profil
Peet:
uložené jako řetězce
= uložené v DB? Ukládejte je jako typ DATE nebo DATETIME.
Peet
Profil
já bych rád pracoval s datem jako DATE nebo DATETIME, ale potřeboval bych vysvětlit jak to vlastně celé funguje do jakého tvaru se uloží jestli je potřeba něco nastavit a hlavně jak uložit do db datum jako DATETIME když ho mám ve tvaru dd.mm.yyy
Tori
Profil
Peet:
DATE se ukládá jako "YYYY-MM-DD", DATETIME jako "YYYY-MM-DD HH:MM:SS". Nejdřív bych to převedla na správný řetězec, pak změnila typ sloupce. Převod vyřešíte jedním updatem s pomocí funkce STR_TO_DATE (anebo komplikovaněji v PHP - projít celou tabulku a updatovat řádek po řádku, což je ale zbytečné).
Peet
Profil
nene to je v pohodě, db je zatím prázdná takže už jsem sloupec změnil na DATE ale uloží mi 0000-00-00 a když do sloupce uložím 11.01.2012 tak mi to uloží jako 2012-01-20 což není pravda.

a jak potom v php převedu normální řetězec DD.MM.YYYY na YYYY-MM-DD..?


a ještě tedy když vytáhnu z DB tenhle tvar YYYY-MM-DD jak ho v php vypíšu jako DD.MM.YYYY jakoby zase nazpátek
panther
Profil
Peet:
a ještě tedy když vytáhnu z DB tenhle tvar YYYY-MM-DD
date_formatem můžeš tahat rovnou tvar, jaký potřebuješ.
Tori
Profil
Peet:
Můžete ho už z DB tahat v požadovaném tvaru (DATE_FORMAT).
Peet
Profil
no jo no.. vždy to zkončí u odkazu a já jsem nahranej.. angličtinu příliš neovládám a navíc nechápu jak se z těchto dokumentací může někdo učit je to hrozně nepřehledný.. omlouvám se ale pochopil jsem opravdu minimum..

už mám uložené dnešní datum v db jako DATE a ted ho potřebuji převést na normální tvar DD.MM.YYYY a chci se zeptat jestli bude fungovat mysql dotaz WHERE datum<'2012-01-11'; nebo jestli se to bude chovat stejně jako s těmi řetězci... pouhé dvě věci a ne prosím odkaz do dokumentací.. děkuji
panther
Profil
Peet:
chci se zeptat jestli bude fungovat mysql dotaz WHERE datum<'2012-01-11'
než napíšeš dotaz, mohl sis to dávno zkusit.

Mohl bych ti to říct rovnou, jak se MySQL v tomto případě zachová. Ale když se naučíš zkoušet si věci sám, dostaneš se dál, než když bude čekat s každou prkotinou, co na to řekne někdo na fóru.
Peet
Profil
jo to máš pravdu, ale dělám ted na větší aplikaci, tak jsem opatrnej..

ale jak můžu sám vyzkoušet něco co neznám.?? já nevím jakou funkcí převádět formáty dat..
panther
Profil
Peet:
ale dělám ted na větší aplikaci, tak jsem opatrnej..
bez základů, nebo s pouhými základy čehokoliv by ses do ničeho většího pouštět neměl, měl bys postupovat pomaloučku.

jak můžu sám vyzkoušet něco co neznám.?
napsal jsi sem nějaký MySQL dotaz, jestli bude fungovat. Když si do tabulky vložíš pár řádků s různými daty, uvidíš, jestli ti ten select vytáhne ta správná data. Spustit SQL dotaz umíš, ne?
Peet
Profil
JO ALE NEZNÁM FUNKCI KTERÁ MI PŘEVEDE YYYY-MM-DD NA DD.MM.YYYY
Nox
Profil
Peet:
si ji napiš neasi ;)
$date = explode("-", $date);
return $date[2].".".$date[1].".".$date[0]
Peet
Profil
jj takhle mi to taky došlo ale myslel jsem že je proto přímo funkce
Ugo
Profil
neco jako getSexyGirlContact('blablaTimmy'); , jeste by slo pouzit treba date('xxx',strtotime($string));
Tori
Profil
Peet:
No a tu MySQL funkci jste nezkoušel? SELECT DATE_FORMAT(`datum`, '%e. %c. %Y') FROM `tabulka`

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: