Vypadá to, že chcete řádky s end_date
je později než před pěti dny.
Nejlepší způsob, jak toho dosáhnout, je pomocí
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
Obchod s přidáváním celých čísel k datům nefunguje v MySQL (je to věc Oracle). Musíte tedy použít jednotku INTERVAL n unit
syntaxe.
Všimnete si, že výše uvedená klauzule WHERE je funkčně ekvivalentní
WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Ale první formulace je lepší než druhá ze dvou důvodů.
- pokud zmíníte
end_date
v klauzuli WHERE, aniž byste ji zabalili do výpočtů, může váš dotaz využít index v tomto sloupci a může běžet rychleji. DATE(NOW())
aCURDATE()
oba odkazují na první okamžik dneška (půlnoc). AleCURDATE()
je o něco jednodušší.