Skip to content
Empieza gratis

¿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

edad.py
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.

Haz tu predicción

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

ColumnaTipo
cliente_idBIGINT
nombreVARCHAR
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_idnombrefecha_nacimientofecha_altaultima_visita
1Ana Ruiz1990-07-012026-01-312026-02-01
2Beto Garza2000-02-292025-01-282025-06-15
3Carla Méndez1985-06-302024-02-062025-10-21

Cada ejecución empieza con copias nuevas de las tablas del curso, así que puedes probar lo que quieras.

Listo para ejecutar tu consulta.

Ejecútalo tú

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.

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.

Los datos del ejercicio, "clientes-frecuentes". Tus cambios corren con tu código.
FilaQuitar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Página 1 de 2

Ejecútalo tú

Comprueba lo que sabes: Carla Méndez nació el 30 de junio de 1985. ¿Qué edad tiene el 30 de junio de 2026?