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

¿Cómo puedo agregar días a una fecha en MYSQL en una consulta?

Parece que desea filas donde end_date es más tarde que hace cinco días.

La mejor forma de conseguirlo es con

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

El negocio de agregar números enteros a las fechas no funciona en MySQL (es una cosa de Oracle). Entonces necesitas usar la unidad INTERVAL n unit sintaxis.

Notarás que mi cláusula WHERE anterior es funcionalmente equivalente a

 WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())

Pero, la primera formulación es superior a la segunda por dos razones.

  1. si menciona end_date en una cláusula WHERE sin envolverla en cálculos, su consulta puede explotar un índice en esa columna y puede ejecutarse más rápido.
  2. DATE(NOW()) y CURDATE() ambos se refieren al primer momento de hoy (medianoche). Pero CURDATE() es un poco más simple.