Parece que você está tentando fazer isso:
WHERE specific_date < (NOW() + 5 days)
Em primeiro lugar, pense cuidadosamente sobre os casos-limite. Esses casos de limite podem morder seus tornozelos em SQL. Você realmente quer
WHERE specific_date <= (NOW() + 5 days)
Faça seu
specific_date
colunas timestamps contêm apenas dias (ou seja, datas com horas iguais à meia-noite) ou elas contêm datas e horas? Se você deseja obter os resultados desejados, precisa ter cuidado com esses detalhes. De qualquer forma, tente isso:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Esta é uma boa maneira de fazer essa pesquisa. O valor da coluna fica sozinho em um lado do predicado de desigualdade (o
<=
) para que o MySQL possa fazer uma varredura de intervalo de índice se você tiver um índice na coluna. A aritmética de datas no MySQL é bastante flexível. Você pode fazer
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
e assim por diante.