Autor Zpráva
Prochy
Profil
Ahoj,
chci se zeptat, jak porovnat správně datum, který mám v databázi. Potřebuji vybrat datum dnešní a novější. Takže dejme tomu mám v databázi dnešek (04. 06. 2012) a já potřebuji, aby se mi vybral. Takže dotaz mám nasledující:
SELECT * FROM TABULKA WHERE expires>=NOW()
Ale dnešek se mi nevybere. Vím, že to je tím, že 04. 06. 2012 = 04. 06. 2012 00:00:00 a NOW()=04. 06. 2012 22:13:26 (čas v kterém bylo založeno toto téma). Ale já bych potřeboval, aby mi to vzalo i dnešní datum, jediný co mě napadlo, bylo odečíst jeden den expires>=DATE_ADD(NOW(),INTERVAL -1 DAY). Ale myslim si, že bude určitě lepší řešení než toto, ale nevim jaké.
Jestli může někdo poradit, tak budu rád.
Tori
Profil
Prochy:
dejme tomu mám v databázi dnešek (04. 06. 2012)
To jste se přepsal, nebo to tam tak opravdu máte? Datový typ sloupce by měl být datetime (formát yyyy-mm-dd hh:mm:ss), pak bude fungovat porovnávání s NOW().

K dotazu mě napadly napadly dvě možnosti: buď rozdělit na dva sloupce (typ date a typ time) a porovnávat s CURRENT_DATE(), anebo si datum složit v PHP a doplnit tam i časy od 00:00 do 23:59. Druhá varianta (poslat do SQL hotovou hodnotu místo volání funkce) je lepší v tom smyslu, že MySQL může využít vlastní cache.

edit2: ↓Majkl578: Ještě jsem dopisovala ten druhý odstavec a mezitím mi to došlo, díky. Příliš brzo odesílám nedopsané příspěvky.
Majkl578
Profil
Prochy:
Místo NOW() zkus použít CURDATE(). NOW obsahuje, jak sám říkáš, i časovou složku, která způsobuje problém při porovnání. Sloupec by samozřejmě měl být typu DATE (yyyy-mm-dd).

Tori:
Datový typ sloupce by měl být datetime
Proč by měl? Typ DATE mi přijde pro samotné datum vhodnější.
Prochy
Profil
Tori:
Ano mám, jen sem to převedl do českého formátu, mám tam 2012-06-04, sloupec je datového typu DATE, takže tam žádné hodiny, minuty ani sekundy nejsou.


Majkl578:
Ano, funguje děkuji. Hledal jsem takovouto funkci v manuálu MySQL, ale bohužel sem mi to v tom nepodařilo najít, příště zkusím být pozornější. Ještě jednou děkuji.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0