¿Cómo calculo una edad en SQL y en pandas?
Calcula la edad en años cumplidos con date_sub en DuckDB y con una fórmula de cumpleaños en pandas, y pruébala con los casos en que restar años falla.
Curso gratis. Tu Maestro, una IA, .
¿Cuántos años tiene Ana?
Marketing quiere los clientes por edad. Ana Ruiz nació el 1 de julio de 1990. El 30 de junio de 2026, nuestro "hoy", ¿cuántos años tiene?
Cualquier persona contesta 35: los 36 los cumple mañana. Una consulta no siempre contesta lo mismo. Predice qué dan cuatro maneras de calcularlo.
Cuatro cálculos de la edad de Ana Ruiz al 30 de junio de 2026. Escribe qué crees que da cada uno y por qué.
Cuatro cálculos de la edad de Ana Ruiz al 30 de junio de 2026. Escribe qué crees que da cada uno y por qué.
Cuatro maneras de calcular una edad
import duckdb
print(duckdb.sql("""
SELECT
2026 - 1990 AS resta_de_anios,
date_diff('year', DATE '1990-07-01', DATE '2026-06-30') AS con_date_diff,
(DATE '2026-06-30' - DATE '1990-07-01') // 365 AS dias_entre_365,
date_sub('year', DATE '1990-07-01', DATE '2026-06-30') AS con_date_sub
""").fetchall())
Adivinar está bien: se guarda tal como la escribiste para compararla. Solo tú y tu Maestro ven tus predicciones.
La edad es una pregunta de cumpleaños
La edad son los años completos desde el nacimiento. Se calcula así: resta los años, y si este año todavía no llega el cumpleaños, quita uno. Eso es justo lo que hace date_sub('year', nacimiento, referencia) en DuckDB: cuenta años completos.
Los atajos fallan en los días antes del cumpleaños, y no son pocos. En los 24 clientes, restar los años da una edad equivocada a 12 de ellos, y dividir los días entre 365 se equivoca con 2. Que el atajo acierte casi siempre es lo que lo vuelve peligroso: una revisión rápida no lo encuentra.
Dos casos para revisar cualquier fórmula de edad:
- El día del cumpleaños. Carla Méndez nació el 30 de junio de 1985: el 30 de junio de 2026 ya tiene 41.
- Nacer un 29 de febrero. Beto Garza nació el 29 de febrero de 2000.
date_sub('year', DATE '2000-02-29', DATE '2026-02-28')da 26: DuckDB cuenta el 28 de febrero como su cumpleaños en un año que no es bisiesto. Si en tu caso importa qué día cumple, decide la regla y escríbela.
¿Te sorprendió que date_diff diera 36? Pregúntale a tu Maestro qué está contando en realidad.
Una edad en pandas
Ejemplo resuelto · 4 pasos
pandas no tiene date_sub. Calcula la edad de cada cliente al 30 de junio de 2026 con las columnas de fecha.
Piensa el siguiente paso por tu cuenta y luego ábrelo para comparar.
Inténtalo
La consulta calcula la edad de cada cliente con date_diff. Cámbiala para que calcule años completos. Una buena respuesta tiene 24 filas, con 35 para Ana Ruiz y 41 para Carla Méndez.
Calcula la edad de cada cliente al 30 de junio de 2026, en años completos, ordenada por clienteid.
Tu turno
Calcula la edad de cada cliente al 30 de junio de 2026, en años completos, ordenada por cliente_id.
Tablas: clientes (cliente_id, nombre, fecha_nacimiento, fecha_alta, ultima_visita)
clientes · 24 filas
| Columna | Tipo |
|---|---|
| cliente_id | BIGINT |
| nombre | VARCHAR |
| fecha_nacimiento Fecha de nacimiento. | DATE |
| fecha_alta Día en que se inscribió al programa de clientes frecuentes. | DATE |
| ultima_visita Día de su visita más reciente. | DATE |
Primeras filas
| cliente_id | nombre | fecha_nacimiento | fecha_alta | ultima_visita |
|---|---|---|---|---|
| 1 | Ana Ruiz | 1990-07-01 | 2026-01-31 | 2026-02-01 |
| 2 | Beto Garza | 2000-02-29 | 2025-01-28 | 2025-06-15 |
| 3 | Carla Méndez | 1985-06-30 | 2024-02-06 | 2025-10-21 |
Cada ejecución empieza con copias nuevas de las tablas del curso, así que puedes probar lo que quieras. Tab agrega sangría; para salir del editor, presiona Escape y luego Tab.
Listo para ejecutar tu consulta.
Inténtalo sin ayuda
Ahora en pandas: calcula la columna edad como en el ejemplo resuelto, sin copiarlo si puedes, e imprime el nombre y la edad de los primeros cinco clientes. Una buena respuesta empieza con Ana Ruiz, 35. Si tus edades salen un año arriba, pégale tu código a tu Maestro.
Calcula la edad de cada cliente al 30 de junio de 2026 en años completos e imprime nombre y edad de los primeros cinco.
Calcula la edad de cada cliente al 30 de junio de 2026 en años completos e imprime nombre y edad de los primeros cinco.
Ejecuta tu código para ver lo que imprime y el valor de su última expresión. Cada ejecución empieza de nuevo. Ctrl+Enter ejecuta tu código. Tab agrega sangría; para salir del editor, presiona Escape y luego Tab.
Listo para ejecutar tu código.
Ejecuta tu código para ver su salida aquí.
Datos: clientes-frecuentes, 24 filas
Enter guarda una celda y Escape la deja como estaba. Deja una celda vacía para un valor faltante.
| Fila | Quitar | |||||
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 | ||||||
| 4 | ||||||
| 5 | ||||||
| 6 | ||||||
| 7 | ||||||
| 8 | ||||||
| 9 | ||||||
| 10 | ||||||
| 11 | ||||||
| 12 | ||||||
| 13 | ||||||
| 14 | ||||||
| 15 | ||||||
| 16 | ||||||
| 17 | ||||||
| 18 | ||||||
| 19 | ||||||
| 20 |