Autor Zpráva
RiZe
Profil
Z databáze potřebuji vybrat řádky, kde hodnota sloupce session_end, který obsahuje datum, starší než týden, a kde je hodnota sloupce session_autologin 1, nebo kde je hodnota sloupce session_end starší jak teď (fce NOW()) a sloupec session_autologin má hodnotu 0. Mám složený dotaz, který mi ale vybere i řádky, kde je session_autologin 1, a přitom session_end není starší jak týden.

Dotaz


SELECT * FROM cth_sessions
WHERE (session_end < DATE_ADD(NOW(), INTERVAL 1 WEEK) AND session_autologin = '1') OR
(session_end < NOW() AND session_autologin = '0')
ondra_knezour
Profil
hodnota sloupce session_end, který obsahuje datum, starší než týden, a kde je hodnota sloupce session_autologin 1,

(session_end < DATE_ADD(NOW(), INTERVAL 1 WEEK) AND session_autologin = '1') 


nebo kde je hodnota sloupce session_end starší jak teď (fce NOW()) a sloupec session_autologin má hodnotu 0.

(session_end < NOW() AND session_autologin = '0')


dotaz mi ale vybere i řádky, kde je session_autologin 1, a přitom session_end není starší jak týden.

Tohle v původním zadání vůbec neni :)

(session_end < NOW() AND session_end < DATE_ADD(NOW(), INTERVAL 1 WEEK) AND session_autologin = '0')


podle toho, jakou používáš databázi by možná šlo použít něco efektivnějšího než now() a date() za sebou.


Tento řádek je tady jenom proto, aby si ta zoufalost uvědomila, že se ve formátování něco změnilo.
ondra_knezour
Profil
Plácám blbosti

session_end < DATE_ADD(NOW(), INTERVAL 1 WEEK)


čili česky sečti_data(teď(), za jeden týden) čemuž vyhoví například i dnešní datum.

Řešení je
DATE_SUB()
nebo přičítat mínus jeden týden.
RiZe
Profil
Vypadá to, že už to běhá. Díky.
Toto téma je uzamčeno. Odpověď nelze zaslat.