Tema SQL
INTERVAL (PostgreSQL)
Tipo de dato para duraciones y desplazamientos calendario con unidades combinables (días, horas, meses). Aritmética más rica que simple entero de segundos.
Descripción
Los literales INTERVAL como un día más dos horas o dos años se suman a timestamp respetando meses y años de calendario. Cuidado con mezcla mes y día: el tipo puede separar month y day. Entrada ISO 8601 con cast. Para almacenar solo duración en aplicación, documenta reglas de negocio. MySQL INTERVAL en expresiones; SQL Server DATEADD por unidad.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
TIMESTAMP '2026-04-12 10:00' + INTERVAL '7 days'
INTERVAL '1.5 hours'
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Precisión
- interval(p) para fracciones de segundo.
- Comparación
- Normaliza a una base común para ordenar.
Ejemplos
Ejemplo 1
SELECT now() + interval '3 months' AS dentro_de_tres_meses;
SELECT extract(epoch from interval '1 hour') AS segundos;
Ejemplo 2
SELECT (timestamp '2026-01-01 00:00' + interval '1 year 3 months') AS futuro;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.