INTERVAL
Construcción SQL
Define un periodo de tiempo, un intervalo que puedes sumar a fechas y restar de ellas.
PostgreSQL 17.9
INTERVAL 'quantity unit[ quantity unit ...]'- [ ]parte opcional
- ...se puede repetir
- quantity
- Número de unidades, puede ser decimal o negativonumeric
- unit
- Unidad de tiempo, también en plural (days, hours); varios pares se separan con espaciosPalabra clavemicrosecondmillisecondsecondminutehourdayweekmonthyeardecadecenturymillennium
Valor devuelto
Valor de tipo interval
Ejemplos
Intervalos de distinta duración
PostgreSQL 17.9
SELECT INTERVAL '1 year 2 months 3 days' AS long_interval,
INTERVAL '90 minutes' AS minutes;Fecha de la mayoría de edad
PostgreSQL 17.9
SELECT member_name,
birthday,
birthday + INTERVAL '18 years' AS adult_since
FROM FamilyMembers;Cálculos con fechas
PostgreSQL 17.9
SELECT DATE '2024-01-31' + INTERVAL '1 month' AS month_later,
TIMESTAMP '2024-03-08 10:00' - TIMESTAMP '2024-03-01 08:30' AS difference,
INTERVAL '1 day' * 3 AS three_days;Pagos de los tres últimos meses
PostgreSQL 17.9
SELECT payment_id,
date
FROM Payments
WHERE date >= TIMESTAMP '2006-03-12' - INTERVAL '3 months'
ORDER BY date;Detalles
Un intervalo se puede sumar a una fecha, restar de ella y multiplicar por un número, y la diferencia entre dos valores timestamp también es un intervalo. Una fecha más un intervalo da un timestamp, mientras que la diferencia entre dos valores date es un número entero de días.
Los meses tienen en cuenta la duración del mes: DATE '2024-01-31' + INTERVAL '1 month' da 2024-02-29. Las horas no se convierten en días automáticamente: INTERVAL '36 hours' sigue siendo 36:00:00, y JUSTIFY_HOURS lo convierte en 1 day 12:00:00.