Referencia de funciones

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 negativo
numeric
unit
Unidad de tiempo, también en plural (days, hours); varios pares se separan con espacios
Palabra clave
microsecondmillisecondsecondminutehourdayweekmonthyeardecadecenturymillennium

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;
long_intervalminutes
1 year 2 mons 3 days01:30:00

Fecha de la mayoría de edad

PostgreSQL 17.9
SELECT member_name,
	birthday,
	birthday + INTERVAL '18 years' AS adult_since
FROM FamilyMembers;
member_namebirthdayadult_since
Headley Quincey1960-05-131978-05-13
Flavia Quincey1963-02-161981-02-16
Andie Quincey1983-06-052001-06-05
Lela Quincey1985-06-072003-06-07
Annie Quincey1988-04-102006-04-10
Ernest Forrest1961-09-111979-09-11
Constance Forrest1968-09-061986-09-06
Wednesday Addams2005-01-132023-01-13

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;
month_laterdifferencethree_days
2024-02-297 days 01:30:003 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;
payment_iddate
122005-12-22
212006-01-12
282006-01-15
222006-03-12

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.

Véase también

Dónde aprenderlo