Tema SQL
age() (PostgreSQL)
Devuelve intervalo entre dos marcas de tiempo o entre hoy y una fecha (timestamp). Muy usado para edades y antigüedades sin aritmética manual de días.
Descripción
age(fin [, inicio]) sin segundo argumento asume current_date a medianoche en tipo date; con timestamps devuelve interval con meses y años «calendario». Diferente de simple resta de fechas que da días enteros. Para informes legales valida cómo cuentas años bisiestos. SQL Server DATEDIFF con datepart; MySQL TIMESTAMPDIFF.
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.
age(timestamp, timestamp)
age(timestamp)
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.
- Tipos
- Mezclar date y timestamp promueve según reglas.
Ejemplos
Ejemplo 1
SELECT age(TIMESTAMP '2000-01-15', TIMESTAMP '2026-04-12') AS intervalo;
SELECT nombre, age(fecha_nac::timestamp) AS edad_aprox
FROM personas;
Ejemplo 2
SELECT nombre, age(current_date, fecha_nac::date) AS edad
FROM personas LIMIT 5;
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.