Autor Zpráva
rK
Profil *
zdar lidi mám problém v mysql db mám u každého záznamu sloupec year month day , potřebuju vypsat zaznamy pouze ty co teprv budou to znamená že v php mam 3 proměnné rok měsíc den (aktuální) a sql kod je nasledující

$query = "select * from akce where year >= '$year' AND month >= '$month' AND day >= '$day' ORDER BY year ASC,month ASC, day ASC";

záznamy tam jsou s datumy 7.7. 8.7. 21.7. 28.7. a další vypíše mi to pouze jeden záznam a to 28.7. kde se ztratil ten zbytek ?

pokud dám pryč "...AND day >= '$day'..." tak mi to vše vypíše pouspořádá jak má ale jsou tam navíc záznyma z tohoto měsíce které už byly ty tam nechci :/

dík
Casero
Profil
rK
Co začít používat časový formát?
rK
Profil *
upravuju www dělal to známý prostě to nechápu včem je chyba ?
djlj
Profil
To není chyba, to prostě normálně porovná čísla. Je logické, že to udělá to, cos popsal.
Jak píše Casero, nejlepší bude použít sloupec o datovém typu date.
rK
Profil *
já vím že je nejlepší používat čas v sekundách jenže ted není čas to předělávat celé to se jako nedá udělat sql dotaz ? který to vše vypíše tak jak má ?

"já teda nechápu co je logického natom vynechat 7.7. 8.7. 21.7. a vypsat pouze 28.7. ?"
Mastodont
Profil
rK

No když tam máš AND day >= '$day' , tak přece jsou vybrány jen záznamy, kde číslo dne je větší nebo rovné aktuálnímu číslu dne, ne?

Dnes je 27. června, takže ti to nemůže vybrat 7. 7., protože 7 < 27. Kapišto?
djlj
Profil
Můžeš zkusit
WHERE CONCAT(year, '-', month, '-', day)>'".$year."-".$month."-".$day."'
ale to nejspíš fungovat nebude.
Mastodont
Profil
where year >= '$year' AND ( ( month = '$month' AND day > '$day' ) OR month > '$month')
Kajman_
Profil *
nebo
date(concat(`year`,'-',`month`,'-',`day`))>=curdate()

nebo
date(`year`*10000+`month`*100+`day`)>=curdate()

Každopádně je normální ukládat datum jako datum. Operace pak budou rychlejší.

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: