Vypadá to, že se pokoušíte udělat toto:
WHERE specific_date < (NOW() + 5 days)
Nejprve si pečlivě promyslete hraniční případy. Tyto hraniční případy vám mohou v SQL kousnout kotníky. Opravdu chcete
WHERE specific_date <= (NOW() + 5 days)
Udělejte si specific_date
sloupce časová razítka obsahují pouze dny (tedy data s časy rovnými půlnoci) nebo obsahují data a časy? Pokud chcete dosáhnout požadovaných výsledků, musíte si na tyto detaily dávat pozor.
V každém případě zkuste toto:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Toto je dobrý způsob, jak provést takové vyhledávání. Hodnota sloupce stojí samostatně na jedné straně predikátu nerovnosti (<=
), takže mySQL může provést skenování rozsahu indexu, pokud máte index ve sloupci.
Aritmetika data v MySQL je poměrně flexibilní. Můžete to udělat
NOW() + INTERVAL 10 SECOND
NOW() - INTERVAL 2 MINUTE
NOW() + INTERVAL 4 HOUR
CURDATE() - INTERVAL 1 WEEK /* midnight one week ago */
LAST_DAY(NOW()) + INTERVAL 1 DAY - INTERVAL 1 MONTH /*first day of present month*/
NOW() - INTERVAL 1 QUARTER
CURDATE() - INTERVAL 5 YEAR
a tak dále.