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() 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. |
||
Časová prodleva: 13 let
|
0