sql >> Base de Datos >  >> RDS >> Mysql

Consulta Mysql Datediff

Parece que estás intentando hacer esto:

WHERE specific_date < (NOW() + 5 days)

En primer lugar, piense detenidamente en los casos límite. Estos casos límite pueden morderte los tobillos en SQL. ¿De verdad quieres

WHERE specific_date <= (NOW() + 5 days)

Haz tu specific_date las marcas de tiempo de las columnas contienen solo días (es decir, fechas con horas iguales a la medianoche) o contienen fechas y horas? Si va a obtener los resultados que desea, debe tener cuidado con esos detalles.

En cualquier caso, prueba esto:

WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)

Esta es una buena manera de hacer una búsqueda de este tipo. El valor de la columna está solo en un lado del predicado de desigualdad (el <= ) para que mySQL pueda hacer un escaneo de rango de índice si tiene un índice en la columna.

La aritmética de fechas en MySQL es bastante flexible. Puedes 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.