Anscheinend versuchen Sie Folgendes:
WHERE specific_date < (NOW() + 5 days)
Denken Sie zunächst sorgfältig über die Grenzfälle nach. Diese Grenzfälle können Ihre Knöchel in SQL beißen. Wollen Sie eigentlich
WHERE specific_date <= (NOW() + 5 days)
Machen Sie Ihr specific_date
Spalten-Zeitstempel enthalten nur Tage (d. h. Datumsangaben mit Uhrzeiten gleich Mitternacht) oder enthalten sie Datumsangaben und Uhrzeiten? Wenn Sie die gewünschten Ergebnisse erzielen möchten, müssen Sie auf diese Details achten.
Versuchen Sie es auf jeden Fall so:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Dies ist eine gute Möglichkeit, eine solche Suche durchzuführen. Der Spaltenwert steht allein auf einer Seite des Ungleichheitsprädikats (der <=
), sodass mySQL einen Indexbereichsscan durchführen kann, wenn Sie einen Index für die Spalte haben.
Die Datumsarithmetik in MySQL ist ziemlich flexibel. Das können Sie tun
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
und so weiter.