Parece que usted está tratando de hacer esto:
WHERE specific_date < (NOW() + 5 days)
En primer lugar, pensar cuidadosamente acerca de los casos límite. Estos casos límite pueden morderse los tobillos en SQL. ¿De verdad quiere
WHERE specific_date <= (NOW() + 5 days)
¿Sus marcas de tiempo specific_date
columnas contienen sólo días (es decir fechas con tiempos iguales a la media noche) o ellos contienen fechas y horas? Si va a obtener los resultados que desea, debe tener cuidado con esos detalles.
En cualquier caso, intente lo siguiente:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Ésta es una buena manera de hacer una búsqueda de este tipo. El valor de columna se encuentra solo en un lado del predicado de desigualdad (<=
) por lo que mySQL puede hacer un análisis de rango de índice si tiene un índice en la columna.
La aritmética de fechas en MySQL es bastante flexible. Puede hacer
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
y así sucesivamente.
Sí gracias, funcionó. – sathish
¿Funciona esto también con horas? por ejemplo: 'WHERE fecha_específica <= DATE_ADD (AHORA(), INTERVALO 24 HORAS)' –
Sí, ver mi edición. –