Cómo calcular la edad a partir de una fecha de nacimiento (Excel, Sheets y SQL)
Actualizado: 2026-09-29
La edad son dos fechas más un calendario, y casi toda edad errónea de una hoja de cálculo vino de tratarla como una división. Una fórmula de Excel responde la versión principal de esta pregunta, pero las variantes que hay detrás —años y meses, una fecha de referencia concreta, sin DATEDIF, Google Sheets, SQL Server— necesitan cada una una respuesta distinta, y la de SQL Server está sistemáticamente mal hasta que la corriges. Todas las fórmulas de esta página están escritas exactamente como las tecleas, y las aproximaciones se marcan como aproximaciones.
Herramienta
Calcula tu edad en tu navegador
Funciona por completo en tu navegador: tu fecha de nacimiento y tu edad nunca se transmiten a ningún sitio.
Herramienta
Calcula tu edad en tu navegador
Funciona por completo en tu navegador: tu fecha de nacimiento y tu edad nunca se transmiten a ningún sitio.
La respuesta corta
Si A2 contiene la fecha de nacimiento, entonces =DATEDIF(A2,TODAY(),"Y") devuelve la edad exacta en años cumplidos. Es la misma fórmula en Excel y en Google Sheets, cuenta años de calendario reales en lugar de una duración media de año, y te resta por ti el cumpleaños que aún no ha llegado. Es la única fórmula de edad de esta página en la que debes confiar para la edad real de una persona hoy.
Todo lo demás de aquí es una variante suya. Tres llamadas a DATEDIF con "Y", "YM" y "MD" escriben la edad en años, meses y días. Sustituir TODAY() por una referencia de célula da la edad en una fecha concreta. Una fórmula basada en YEAR hace el trabajo donde DATEDIF no está documentado o simplemente falta. En SQL Server, DATEDIFF(year, ...) no es una edad en absoluto hasta que lo corriges.
- Edad exacta en años, Excel o Sheets: =DATEDIF(A2,TODAY(),"Y")
- Años, meses y días: tres llamadas a DATEDIF con "Y", "YM" y "MD"
- Sin DATEDIF: =YEAR(TODAY())-YEAR(A2)-(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2)))
- Edad en una fecha concreta guardada en B2: =DATEDIF(A2,B2,"Y")
- Total de días vividos: =TODAY()-A2, con formato de número en lugar de fecha
- SQL Server: resta 1 a DATEDIFF(year, birth, GETDATE()) cuando el cumpleaños aún no ha llegado
Por qué la edad no es una división
Restar dos fechas da un número de días, que es lo único exacto que produce una fecha de nacimiento. Cualquier edad en años derivada de ese número es una decisión sobre la duración de un año, y la decisión es donde viven los errores.
La derivación tentadora es =INT((TODAY()-A2)/365.25). La constante existe para absorber los años bisiestos: un bloque de cuatro años que contiene un día bisiesto abarca 365 x 4 + 1 días, que son 1461, y 1461 entre 4 es exactamente 365.25. Ese es el año juliano, y por eso la fórmula parece bastante razonable como para estar en todas partes.
El calendario en uso no es el juliano. La regla gregoriana elimina el día bisiesto en los años de siglo que no son divisibles por 400, así que 1900 no fue bisiesto y 2100 no lo será, mientras que 2000 sí lo fue. A lo largo de 400 años son 97 días bisiestos en vez de 100, de modo que el año medio gregoriano es 365 + 97/400 días, es decir 365.2425. Multiplica 365.25 por 400 y obtienes 146,100 días; el calendario da 146,097.
El divisor es un poco demasiado grande, así que la estimación va por detrás de la edad verdadera, y cuando se queda una unidad entera por detrás, el entero truncado se queda un año corto. Alguien nacida el 28 de febrero de 1900 había vivido 36,524 días en su cumpleaños cien, porque esos años contienen 24 días bisiestos y no 25. 36,524 entre 365.25 es 99.997, así que INT imprime 99 para una persona de cien años.
Dividir por 365 en lugar de por 365.25 falla en la dirección contraria, porque 365 es más corto que un año real. =INT((TODAY()-A2)/365) informa el siguiente cumpleaños como ya alcanzado durante tantos días antes de él como días bisiestos haya acumulado la persona: aproximadamente los últimos 10 días de cada año de edad de alguien de 40 años cuyos años abarcan 10 días bisiestos. Ninguno de los dos defectos es un artefacto de redondeo, así que ROUND no puede repararlo. Usa una división para tramos de población y ejes de gráficos, donde un año más o menos no cambia nada; usa el conteo de calendario cuando el número describe a una persona.
Calcular la edad en Excel
DATEDIF(start_date, end_date, unit) devuelve el número entero de unidades de calendario completas entre dos fechas. La unidad que lo convierte en una edad es "Y": años completos, que se ocupa de la duración de los meses, los años bisiestos y la puerta del cumpleaños sin que tú escribas ninguna lógica.
Años completos con DATEDIF
Escribe =DATEDIF(A2,TODAY(),"Y") junto a la fecha de nacimiento y dale al resultado formato de número general. TODAY() lo mantiene vivo: la columna se recalcula cuando se abre el libro, así que las edades se actualizan solas.
Conviene conocer dos modos de fallo. Si la fecha de inicio es posterior a la de fin —una fecha de nacimiento futura, o el día y el mes al revés—, DATEDIF devuelve un error en lugar de un número negativo, lo cual es honesto. Un A2 vacío es peor: Excel lee la célula vacía como el inicio de su calendario de fechas y no como un dato que falta, así que obtienes un número de años enorme y sin sentido en lugar de una célula vacía. Protégelo con =IF(A2="","",DATEDIF(A2,TODAY(),"Y")).
Los demás conteos salen directamente de la diferencia de días. El total de días vividos es =TODAY()-A2 con formato de número. Las semanas completas son =INT((TODAY()-A2)/7).
Si la fecha de nacimiento es texto en lugar de una fecha
La resta y DATEDIF necesitan fechas serie reales. Las filas pegadas de una exportación o de un CSV suelen llegar como texto alineado a la izquierda, y la señal es un error en =A2+0. Convierte en el punto de uso: =DATEDIF(DATEVALUE(A2),TODAY(),"Y").
DATEVALUE lee el texto usando tu configuración regional, así que 03/04/1990 es el 4 de marzo en Londres y el 3 de abril en Nueva York. Si toda una columna está desplazada por meses, reconstruye la fecha con sus piezas mediante =DATE(RIGHT(A2,4),MID(A2,4,2),LEFT(A2,2)), adaptado al orden que tengas de verdad, en lugar de esperar que el analizador coincida contigo.
Edad en Excel en años y meses
La escritura completa usa tres llamadas a DATEDIF con tres unidades, porque cada unidad responde a una pregunta distinta. "Y" cuenta los años completos desde el nacimiento, "YM" cuenta los meses completos desde el último cumpleaños, así que siempre va de 0 a 11, y "MD" cuenta los días desde el último aniversario mensual:
=DATEDIF(A2,TODAY(),"Y")&" years, "&DATEDIF(A2,TODAY(),"YM")&" months, "&DATEDIF(A2,TODAY(),"MD")&" days"
Para solo años y meses —la petición habitual para un niño pequeño o un aniversario de servicio—, quita el tercer término: =DATEDIF(A2,TODAY(),"Y")&" years, "&DATEDIF(A2,TODAY(),"YM")&" months". El error común es usar "M" para el componente de meses. "M" devuelve el total de meses completos desde el nacimiento, cientos en un adulto, no el resto.
El total de meses sigue mereciendo la pena como comprobación cruzada: en fechas normales, =DATEDIF(A2,TODAY(),"M") dividido entero entre 12 coincide con "Y", y MOD(DATEDIF(A2,TODAY(),"M"),12) coincide con "YM". Cuando esas dos coincidan con tu edad de tres partes, la fórmula está bien y lo que te sorprendió fue la fecha de entrada.
Una advertencia sobre el componente de días. "MD" mide contra el día del mes del aniversario, y el modo en que Excel trata un día del mes de inicio posterior al que permite el mes de fin es una peculiaridad de larga data: los nacimientos los días 29, 30 o 31 pueden informar un conteo de días final extraño. Las partes de años y meses son fiables; si los días parecen incorrectos, calcula tú esos días a partir del aniversario desplazado en lugar de fiarte de "MD" en esa fila.
Calcular la edad en Google Sheets
Sheets implementa DATEDIF con los mismos tres argumentos y los mismos códigos de unidad, así que todas las fórmulas de esta página se pegan en Sheets sin cambios. No hay una fórmula de edad distinta para Sheets que aprender, solo diferencias de entorno.
Las mismas fórmulas
Edad exacta: =DATEDIF(A2,TODAY(),"Y"). Edad completa: =DATEDIF(A2,TODAY(),"Y")&" years, "&DATEDIF(A2,TODAY(),"YM")&" months, "&DATEDIF(A2,TODAY(),"MD")&" days". Edad en la fecha que haya en B2: =DATEDIF(A2,B2,"Y"). Sin DATEDIF: =YEAR(TODAY())-YEAR(A2)-(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))).
YEARFRAC, DATE, DATEVALUE y MOD existen todos con los mismos significados, y TODAY() no toma argumentos igual que en Excel. Para que una edad deje de moverse —una instantánea que leen otras personas—, pega el resultado encima de las fórmulas como valores, ya que nada hace estático a TODAY().
Peculiaridades propias de Sheets
Una célula de resultado puede heredar un formato de fecha y mostrar la edad como un número de días desde el inicio del calendario, lo que parece un dato roto y es solo formato. Ajusta Formato a Número.
El texto que Sheets no ha leído como fecha se comporta como en Excel: envuélvelo en DATEVALUE o constrúyelo con DATE(1990,5,15). Sheets decide qué es una fecha según la configuración regional de la propia hoja, no la del espectador, así que prueba una columna sospechosa multiplicándola por 1: una fecha real da un número de cinco dígitos, el texto da un error. Y como en Excel, DATEDIF da error cuando la fecha de inicio es posterior a la de fin, así que una fecha de nacimiento futura y una entrada con el día y el mes cambiados se ven idénticas.
Edad en una fecha concreta en Excel
A menudo la pregunta no es la edad de hoy, sino la edad en una fecha de contratación, un vencimiento, el inicio del curso escolar o el plazo de un formulario. Sustituye TODAY() por la fecha de referencia y todo lo anterior funciona sin cambios, porque a DATEDIF nunca le importa de dónde viene su segunda fecha.
Usar una célula de referencia
Fecha de nacimiento en A2, fecha de referencia en B2, y luego =DATEDIF(A2,B2,"Y"). Para la escritura completa, cambia el segundo argumento en las tres llamadas: =DATEDIF(A2,B2,"Y")&" years, "&DATEDIF(A2,B2,"YM")&" months, "&DATEDIF(A2,B2,"MD")&" days". Dejar la fecha en B2 en lugar de teclearla dentro de la fórmula es lo que permite que una columna responda varias fechas de referencia a la vez.
Para una fecha fija, contrúyela con DATE para que la configuración regional no pueda reinterpretarla: =DATEDIF(A2,DATE(2030,6,15),"Y"). Evita =DATEDIF(A2,"15/06/2030","Y"), porque Excel resuelve ese texto según la máquina que lee el archivo y el libro cambia de comportamiento cuando lo abre otra persona.
La fórmula que evita DATEDIF sigue la misma sustitución, con la fecha de referencia dos veces: =YEAR(B2)-YEAR(A2)-(B2<DATE(YEAR(B2),MONTH(A2),DAY(A2))).
Cuando las dos fechas no son el nacimiento y hoy
Una edad es un caso particular de un intervalo entre dos fechas: nacimiento más hoy. Cuando la pregunta real es el tiempo transcurrido entre dos fechas cualquiera —un periodo de contrato, una estancia, un proyecto—, DATEDIF con la fecha anterior primero funciona, pero no tiene nada específico de edad. La calculadora de diferencia de fechas de este sitio es la herramienta hecha para dos fechas arbitrarias; la calculadora de edad está hecha del nacimiento a hoy.
Calcular la edad sin DATEDIF
DATEDIF es inusual: Microsoft nunca lo incluyó en la referencia de funciones, así que no tiene entrada de autocompletado ni constructor, sobrevive por compatibilidad entre hojas de cálculo, y algunas aplicaciones no lo implementan en absoluto. La alternativa portable es una resta de años con una prueba de cumpleaños:
=YEAR(TODAY())-YEAR(A2)-(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2)))
Tres movimientos. YEAR(TODAY())-YEAR(A2) es la respuesta ingenua: la diferencia en años de calendario, correcta una vez pasado el cumpleaños y una de más antes de él. DATE(YEAR(TODAY()),MONTH(A2),DAY(A2)) reconstruye el cumpleaños de este año con las piezas de la fecha de nacimiento. Después TODAY()<esa fecha es TRUE mientras el cumpleaños queda por delante, y restar TRUE lo convierte en 1 mientras que restar FALSE lo convierte en 0, así que el decremento ocurre exactamente en la ventana previa al cumpleaños y en ningún otro sitio.
Dos cosas que hay que respetar. La conversión implícita es el mecanismo, así que en una aplicación que rechace la aritmética con valores lógicos usa la forma explícita IF(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2)),1,0) en lugar de la prueba entre paréntesis. Y para una fecha de nacimiento el 29 de febrero, DATE(2023,2,29) se normaliza al 1 de marzo de 2023 porque el día desborda un mes sin esa fecha, así que la puerta se abre el 1 de marzo en los años no bisiestos. Extender esta vía a los meses residuales funciona, pero se alarga; si tu aplicación tiene DATEDIF, úsalo, y si quieres una edad decimal, usa YEARFRAC más abajo.
YEARFRAC y la edad decimal
YEARFRAC(start_date, end_date, basis) devuelve la fracción de año entre dos fechas, así que =YEARFRAC(A2,TODAY(),1) imprime algo como 39.42 para una persona que pasó poco más de cinco meses de su trigésimo noveno cumpleaños, y INT de ello da los años completos.
El argumento de base selecciona una convención de conteo de días, y las convenciones son financieras más que de calendario. Real/real mide días reales contra la duración media de los años abarcados. Real/360 y real/365 dividen los días reales por un año nominal fijo. La familia 30/360 finge que todos los meses tienen 30 días, lo que contradice un cumpleaños real y se acumula cerca de los límites. Nombra la base explícitamente: =YEARFRAC(A2,TODAY(),1). No dependas de un valor por defecto omitido, porque Excel y Google Sheets no tienen por qué coincidir en él y Sheets acepta menos códigos de base.
=INT(YEARFRAC(A2,TODAY(),1)) es la forma honesta de sacar de ahí una edad entera, y para la mayoría de las fechas de nacimiento coincide con DATEDIF; donde discrepen, DATEDIF es el exacto de calendario. Así que trata YEARFRAC como la herramienta decimal: su uso real es cuando quieres la fracción en sí: estadísticas ponderadas por edad, una asignación prorrateada, acumulación de antigüedad, un modelo que toma la edad como continua. Y observa que una base real/365 divide por 365, y por eso deriva hacia arriba exactamente como lo hace =INT((TODAY()-A2)/365).
Calcular la edad en SQL
SQL es donde la fórmula ingenua no es solo aproximada sino sistemáticamente errónea, porque el clásico DATEDIFF cuenta cruces de frontera y no unidades transcurridas. Los motores lo resolvieron de forma distinta, así que la respuesta depende de en qué base de datos estés.
SQL Server: DATEDIFF cuenta fronteras de año, no años
DATEDIFF(datepart, start, end) devuelve cuántas veces esa datepart se volteó entre las dos fechas. Alguien nacido el 31 de diciembre de 1990 da DATEDIFF(year, birth, GETDATE()) = 34 el 1 de enero de 2024, porque se cruzaron 34 años nuevos. La persona tiene 33, pues cumplió 33 el 31 de diciembre anterior. Cualquiera cuyo cumpleaños aún no haya llegado este año sale exactamente un año mayor de lo debido, y la consulta parece correcta porque la función hace lo que documenta.
La corrección estándar resta uno cuando el aniversario no se ha alcanzado, con la misma forma que la fórmula de Excel que evita DATEDIF, escrita como una única sentencia que puedes pegar:
SELECT DATEDIFF(year, birth, GETDATE()) - CASE WHEN DATEADD(year, DATEDIFF(year, birth, GETDATE()), birth) > GETDATE() THEN 1 ELSE 0 END AS age FROM people;
El mecanismo es DATEADD: sumar de vuelta el conteo ingenuo de años a la fecha de nacimiento produce la fecha en que cae el cumpleaños número N de esa persona. Si esa fecha aún está por delante de hoy, el conteo se pasó de uno. Prefiere esto a comparar MONTH y los números de día a mano, porque maneja los cumpleaños del 29 de febrero sin ramas extra.
Un detalle de ajuste: SQL Server retrocede un día de destino inválido hasta el último día válido del mes, así que DATEADD(year, 23, '2000-02-29') da 28 de febrero de 2023 en lugar de desbordar a marzo. Un cumpleaños del 29 de febrero, por tanto, se incrementa aquí un día antes de lo que lo hace DATEDIF de Excel en un año no bisiesto.
SQL Server: años, meses y días
Aplica la misma corrección un nivel más abajo. El conteo corregido de meses completos es DATEDIFF(month, birth, GETDATE()) - CASE WHEN DATEADD(month, DATEDIFF(month, birth, GETDATE()), birth) > GETDATE() THEN 1 ELSE 0 END. Apelájalo como fm en una tabla derivada o en un CROSS APPLY para que la expresión se escriba una sola vez.
Desde fm las piezas no necesitan más lógica de fechas: los años son fm / 12 —ambos operandos son enteros, así que SQL Server trunca—, los meses sobrantes son fm % 12, y los días son el resto después del desplazamiento, DATEDIFF(day, DATEADD(month, fm, birth), GETDATE()). Esa trilogía es exacta, y es lo que debes usar cuando una interfaz muestra una edad en unidades mixtas en lugar de un entero pelado.
MySQL y PostgreSQL
TIMESTAMPDIFF de MySQL cuenta unidades completas y no necesita corrección: SELECT TIMESTAMPDIFF(YEAR, birth, CURDATE()) AS age FROM people. El total de días es DATEDIFF(CURDATE(), birth): ese DATEDIFF toma la fecha posterior primero y devuelve días, una función distinta de la de SQL Server pese al nombre. Para unidades mixtas, TIMESTAMPDIFF(MONTH, birth, CURDATE()) / 12 da los años y MOD(TIMESTAMPDIFF(MONTH, birth, CURDATE()), 12) los meses residuales.
PostgreSQL es lo más directo, porque AGE devuelve un intervalo de calendario: SELECT EXTRACT(YEAR FROM AGE(CURRENT_DATE, birth)) AS age da años completos exactos, y quitar el EXTRACT muestra toda la descomposición en años, meses y días sin ninguna corrección. Una trampa: AGE es sensible a la zona horaria cuando se encuentra con un timestamp con zona, así que convierte esa columna a date antes de compararla con CURRENT_DATE.
Cuándo usar en su lugar la calculadora de edad
Una fórmula es lo correcto cuando la edad es una columna en una tabla de cientos de filas. Es la forma equivocada cuando necesitas la respuesta una vez y quieres todas las cifras derivadas con ella, porque eso son seis fórmulas ensambladas para hacer lo que hace una página.
La calculadora de edad enlazada más abajo toma una fecha de nacimiento y devuelve la edad exacta en años, meses y días, el total de días vividos, semanas completas, horas y una cuenta atrás hasta el próximo cumpleaños. Su conteo de días es la diferencia bruta, así que las unidades derivadas concuerdan entre sí: la cifra de horas es días vividos por 24, lo que la convierte en una medida de días completos y no en un conteo preciso de la hora de nacimiento. Los signos del zodíaco chino y occidental van junto a la edad, el chino resuelto contra fechas reales del Año Nuevo Lunar y no contra el 1 de enero, ya que el año chino no empieza en el año nuevo gregoriano. Esa tabla cubre nacimientos de 1940 a 2030; fuera de ella la herramienta recurre al año gregoriano, así que trata como poco fiable el zodíaco de un nacimiento anterior.
Conviene conocer sus bordes. Funciona solo con fechas, sin entrada de horas ni minutos. Usa el hoy del propio dispositivo, así que una máquina con un reloj equivocado da una edad equivocada. Una fecha de nacimiento futura no se rechaza; produce conteos negativos, así que revisa la fecha si los números parecen imposibles. La página indica que no sirve para una verificación de edad legal u oficial, y nada de lo que introduzcas se guarda ni se envía a ningún sitio.
- Fórmulas para una columna de edades en un libro o un campo en una consulta.
- La calculadora para una persona: unidades completas, días y semanas vividas, horas, cuenta atrás al próximo cumpleaños.
- Zodíaco chino con fechas reales del Año Nuevo Lunar, fiable para nacimientos de 1940 a 2030.
- No sirve para verificación de edad legal u oficial, ni tiene precisión de hora del día.
- Dos fechas que no son el nacimiento y hoy: usa en su lugar la calculadora de diferencia de fechas.
Preguntas frecuentes
¿Cuál es la mejor fórmula para calcular la edad a partir de una fecha de nacimiento en Excel?
=DATEDIF(A2,TODAY(),"Y") con la fecha de nacimiento en A2. Cuenta años de calendario completos, así que la duración de los meses, los años bisiestos y el cumpleaños que aún no ha llegado quedan resueltos por construcción, y da error en lugar de un número negativo si las fechas están al revés. Dale al resultado formato de número y confirma que A2 sea una fecha real: multiplícalo por 1 y deberías obtener un número de serie de cinco dígitos.
¿Por qué no encuentro DATEDIF en la lista de funciones de Excel?
Porque Microsoft nunca lo documentó. La función existe para dar compatibilidad con hojas de cálculo antiguas, así que calcula bien pero no tiene entrada de autocompletado, ni página de Ayuda en muchas versiones y ni constructor de funciones, y por eso la gente da por hecho que no está disponible y recurre a una división. Si quieres una fórmula documentada y portable, usa =YEAR(TODAY())-YEAR(A2)-(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))).
¿Cómo muestro la edad en años y meses en Excel?
Une dos llamadas a DATEDIF con unidades distintas: =DATEDIF(A2,TODAY(),"Y")&" years, "&DATEDIF(A2,TODAY(),"YM")&" months". "Y" da los años completos desde el nacimiento, "YM" da los meses completos desde el último cumpleaños y siempre va de 0 a 11. Añade &", "&DATEDIF(A2,TODAY(),"MD")&" days" para la edad de tres partes. El error usual es "M" para el componente de meses: devuelve el total de meses desde el nacimiento, no el resto.
¿Es dividir por 365.25 una forma exacta de calcular la edad?
Una aproximación defendible y un dato poco fiable. Un bloque de cuatro años con un día bisiesto abarca 1461 días y 1461/4 es 365.25, así que la constante tiene base, pero el año medio gregoriano es 365.2425 porque los años de siglo como 1900 y 2100 no son bisiestos. El divisor es ligeramente demasiado grande, así que la estimación va por detrás de la edad verdadera y el entero truncado sale un año corto en intervalos que perdieron un día bisiesto: 36,524 días entre 365.25 dan 99 donde la edad es 100. Dividir por 365 deriva en el otro sentido.
¿Cómo calculo la edad en una fecha concreta en lugar de hoy?
Usa la fecha de referencia allí donde las fórmulas usen TODAY(). Con la fecha de referencia en B2: =DATEDIF(A2,B2,"Y") para los años cumplidos, o =DATEDIF(A2,B2,"Y")&" years, "&DATEDIF(A2,B2,"YM")&" months" para dos partes. Para una fecha fija escribe =DATEDIF(A2,DATE(2030,6,15),"Y") en lugar de una fecha en texto, que se relee según la configuración regional de quien abra el archivo. Para dos fechas que no son el nacimiento y hoy, encaja mejor una calculadora de diferencia de fechas.
¿Google Sheets calcula la edad igual que Excel?
Sí. Sheets admite DATEDIF con argumentos y códigos de unidad idénticos, además de TODAY, YEARFRAC, DATE, DATEVALUE y MOD, así que las fórmulas se transfieren sin cambios. La rareza propia de Sheets es la visualización: una célula que hereda un formato de fecha muestra un número pequeño de edad como una fecha cerca del inicio del calendario, y eso es solo formato. Ajusta Formato a Número. Sheets también interpreta las fechas tecleadas según la configuración regional de la propia hoja, no la del espectador.
¿Puedo usar YEARFRAC para calcular la edad?
Puedes, si entiendes el valor devuelto. =YEARFRAC(A2,TODAY(),1) da una edad decimal como 39.42, y INT de ella da los años completos, que coinciden con DATEDIF para la mayoría de las fechas de nacimiento. La base elige una convención de conteo de días: real/real, real/360, real/365 o una familia 30/360, y un divisor nominal de 360 o 365 deriva contra el calendario igual que dividir por 365. Nombra la base 1 en lugar de fiarte de un valor por defecto, porque Excel y Sheets no tienen por qué coincidir y Sheets admite menos códigos.
¿Por qué el DATEDIFF de SQL Server es incorrecto para la edad?
No está roto, mide otra cosa: DATEDIFF(year, start, end) cuenta las fronteras de año cruzadas, no los años completos transcurridos, así que una persona nacida el 31 de diciembre de 1990 devuelve 34 el 1 de enero de 2024 teniendo 33. La corrección estándar es DATEDIFF(year, birth, GETDATE()) - CASE WHEN DATEADD(year, DATEDIFF(year, birth, GETDATE()), birth) > GETDATE() THEN 1 ELSE 0 END. Sumar el conteo ingenuo de vuelta a la fecha de nacimiento da ese cumpleaños número N, y si todavía está por delante de hoy el conteo se pasó de uno.
¿Qué función de SQL cuenta años completos para la edad?
Depende del motor. TIMESTAMPDIFF(YEAR, birth, CURDATE()) de MySQL cuenta unidades completas y no necesita corrección. AGE de PostgreSQL devuelve un intervalo consciente del calendario, así que EXTRACT(YEAR FROM AGE(CURRENT_DATE, birth)) es la edad entera exacta; convierte antes una columna timestamp con zona a date. DATEDIFF de SQL Server es el que necesita la corrección con CASE. Cuidado con los nombres compartidos: el DATEDIFF de MySQL toma la fecha posterior primero y devuelve días, a diferencia del contador de fronteras de tres argumentos de SQL Server.
¿Hay alguna herramienta gratuita que dé la edad exacta, los días vividos y el zodíaco?
La calculadora de edad enlazada en esta página toma una fecha de nacimiento y devuelve la edad exacta en años, meses y días, el total de días vividos, semanas completas, horas y una cuenta atrás hasta el próximo cumpleaños, además de los signos del zodíaco chino y occidental. El signo chino usa fechas reales del Año Nuevo Lunar, fiable para nacimientos de 1940 a 2030. Funciona solo con fechas, usa la fecha de tu dispositivo, no está pensada para una verificación de edad legal u oficial, y se ejecuta en tu navegador sin enviar nada a un servidor.
¿Cómo sé cuántos días, semanas u horas he vivido?
Resta la fecha de nacimiento de hoy: el total de días es lo único exacto que sale de dos fechas. Las semanas completas son esa cifra entre 7, y las horas son los días por 24. No uses una fórmula de edad en años para esto: el año es una duración variable (bisiestos incluidos), mientras que días, semanas y horas son conteos fijos. La calculadora enlazada arriba muestra días, semanas y horas vividas de una sola vez.
¿Cómo calcular la edad exacta en años, meses y días sin escribir fórmulas?
Escribe tu fecha de nacimiento en la calculadora de edad de esta página: devuelve la edad en años, meses y días cumplidos usando el calendario real, no una división aproximada, y además la cuenta atrás hasta tu próximo cumpleaños. Para dos fechas cualesquiera que no sean un nacimiento (un plazo, un aniversario), usa la calculadora de diferencia de fechas del sitio.