INTERVAL
Construcción SQL
Suma o resta un intervalo de tiempo a una fecha.
MySQL 8.4
date {+ | -} INTERVAL expr unit- { a | b }una de las opciones
- date
- Fecha o fecha y hora de origenDATE
- + | -
- Sumar o restar el intervalo+-
- INTERVAL expr unit
- Intervalo, por ejemplo INTERVAL 7 DAY
- expr
- Número de unidades; con una unidad compuesta, una cadena, por ejemplo '1:30'
- unit
- Unidad del intervaloPalabra claveMICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR_MICROSECONDHOUR_SECONDHOUR_MINUTEDAY_MICROSECONDDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH
Valor devuelto
Fecha si a una fecha se suman días o unidades mayores; si no, fecha y hora; si el día no existe en el mes, se usa el último día del mes
Ejemplos
Un mes al 31 de enero
MySQL 8.4
SELECT '2024-01-31' + INTERVAL 1 MONTH AS next_month;Plazo de pago en 30 días
MySQL 8.4
SELECT payment_id,
date,
date + INTERVAL 30 DAY AS due_date
FROM Payments
LIMIT 5;Intervalo a la izquierda y resta
MySQL 8.4
SELECT INTERVAL 1 DAY + '2024-12-31' AS new_year,
'2024-03-08 14:30:00' - INTERVAL '1:30' HOUR_MINUTE AS earlier;Detalles
INTERVAL forma parte de una expresión con una fecha, no es un valor por sí mismo: SELECT INTERVAL 1 DAY es un error. date + INTERVAL 7 DAY equivale a DATE_ADD(date, INTERVAL 7 DAY), y el intervalo también puede ir a la izquierda del más. Lo que no puedes es restar una fecha a un intervalo.
Sin intervalo, un número no se suma a la fecha, sino al número AAAAMMDD: CURDATE() + 1 no es mañana. En PostgreSQL, INTERVAL es un tipo de dato y el valor se escribe como cadena: date + INTERVAL '7 days'.