Het lijkt erop dat u dit probeert:
WHERE specific_date < (NOW() + 5 days)
Denk allereerst goed na over de grensgevallen. Deze grensgevallen kunnen je enkels bijten in SQL. Wil je eigenlijk
WHERE specific_date <= (NOW() + 5 days)
Doe je specific_date
kolommen tijdstempels bevatten alleen dagen (dat zijn datums met tijden gelijk aan middernacht) of bevatten ze datums en tijden? Als je de gewenste resultaten wilt krijgen, moet je voorzichtig zijn met die details.
Probeer in ieder geval dit:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Dit is een goede manier om zo'n opzoeking te doen. De kolomwaarde staat alleen aan één kant van het ongelijkheidspredikaat (de <=
) zodat mySQL een indexbereikscan kan uitvoeren als u een index op de kolom heeft.
Datumberekening in MySQL is vrij flexibel. Je kunt doen
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
enzovoort.