Det ser ud til, at du prøver at gøre dette:
WHERE specific_date < (NOW() + 5 days)
Tænk først og fremmest godt over grænsetilfældene. Disse grænsetilfælde kan bide dine ankler i SQL. Vil du faktisk have
WHERE specific_date <= (NOW() + 5 days)
Gør din specific_date
kolonner tidsstempler indeholder kun dage (dvs. datoer med klokkeslæt lig med midnat) eller indeholder de datoer og klokkeslæt? Hvis du vil opnå de resultater, du ønsker, skal du være forsigtig med disse detaljer.
Prøv i hvert fald dette:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Dette er en god måde at lave sådan et opslag på. Kolonneværdien står alene på den ene side af ulighedsprædikatet (<=
). ) så mySQL kan lave en indeksområdescanning, hvis du har et indeks på kolonnen.
Datoregning i MySQL er ret fleksibel. Du kan gøre
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
og så videre.