Det verkar som att du försöker göra det här:
WHERE specific_date < (NOW() + 5 days)
Först och främst, tänk noga på gränsfallen. Dessa gränsfall kan bita dina anklar i SQL. Vill du verkligen
WHERE specific_date <= (NOW() + 5 days)
Gör ditt specific_date
kolumner tidsstämplar innehåller bara dagar (det vill säga datum med tider lika med midnatt) eller innehåller de datum och tider? Om du ska få de resultat du vill ha måste du vara försiktig med dessa detaljer.
Testa i alla fall detta:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Det här är ett bra sätt att göra en sådan sökning. Kolumnvärdet står ensamt på ena sidan av olikhetspredikatet (<=
). ) så att mySQL kan göra en skanning av indexintervall om du har ett index i kolumnen.
Datumräkning i MySQL är ganska flexibel. Du kan göra
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
och så vidare.