Como calcular a idade a partir de uma data de nascimento (Excel, Sheets e SQL)
Atualizado: 2026-09-29
Idade são duas datas mais um calendário, e quase toda idade errada numa planilha veio de tratá-la como uma divisão. Uma fórmula do Excel responde à versão principal desta pergunta, mas as variantes por trás dela — anos e meses, uma data de referência específica, sem DATEDIF, Google Sheets, SQL Server — cada uma precisa de uma resposta diferente, e a do SQL Server está sistematicamente errada até você corrigi-la. Todas as fórmulas abaixo estão escritas exatamente como você as digita, e as aproximações estão marcadas como aproximações.
Ferramenta
Calcule sua idade no seu navegador
Funciona inteiramente no seu navegador — sua data de nascimento e sua idade nunca são transmitidas para lugar nenhum.
Ferramenta
Calcule sua idade no seu navegador
Funciona inteiramente no seu navegador — sua data de nascimento e sua idade nunca são transmitidas para lugar nenhum.
A resposta curta
Se A2 contém a data de nascimento, então =DATEDIF(A2,TODAY(),"Y") devolve a idade exata em anos completos. É a mesma fórmula no Excel e no Google Sheets, ela conta anos de calendário reais em vez de um comprimento médio de ano, e subtrai por você o aniversário que ainda não chegou. É a única fórmula de idade desta página em que você deve confiar para a idade real de uma pessoa hoje.
Todo o resto aqui é uma variante dela. Três chamadas de DATEDIF com "Y", "YM" e "MD" escrevem a idade em anos, meses e dias. Trocar TODAY() por uma referência de célula dá a idade numa data específica. Uma fórmula baseada em YEAR faz o trabalho onde DATEDIF não está documentado ou falta. No SQL Server, DATEDIFF(year, ...) não é uma idade de forma nenhuma até ser corrigido.
- Idade exata em anos, Excel ou Sheets: =DATEDIF(A2,TODAY(),"Y")
- Anos, meses e dias: três chamadas de DATEDIF com "Y", "YM" e "MD"
- Sem DATEDIF: =YEAR(TODAY())-YEAR(A2)-(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2)))
- Idade numa data específica guardada em B2: =DATEDIF(A2,B2,"Y")
- Total de dias vividos: =TODAY()-A2, formatado como número em vez de data
- SQL Server: subtraia 1 de DATEDIFF(year, birth, GETDATE()) quando o aniversário ainda não tiver chegado
Por que idade não é uma divisão
Subtrair duas datas dá uma contagem de dias, que é a única coisa exata que uma data de nascimento produz. Qualquer idade em anos derivada dessa contagem é um juízo sobre o comprimento de um ano, e o juízo é onde moram os erros.
A derivação tentadora é =INT((TODAY()-A2)/365.25). A constante existe para absorver os anos bissextos: um bloco de quatro anos contendo um dia bissexto abrange 365 x 4 + 1 dias, que são 1461, e 1461 dividido por 4 é exatamente 365.25. Esse é o ano juliano, e é por isso que a fórmula parece razoável o bastante para estar em toda parte.
O calendário em uso não é o juliano. A regra gregoriana elimina o dia bissexto nos anos de século não divisíveis por 400, então 1900 não foi bissexto e 2100 não será, enquanto 2000 foi. Ao longo de 400 anos são 97 dias bissextos em vez de 100, de modo que o ano medio gregoriano é 365 + 97/400 dias, ou seja 365.2425. Multiplique 365.25 por 400 e você obtém 146,100 dias; o calendário dá 146,097.
O divisor é grande demais por um pouco, então a estimativa corre atrás da idade verdadeira, e quando fica uma unidade inteira atrás, o inteiro truncado fica um ano curto. Quem nasceu em 28 de fevereiro de 1900 havia vivido 36,524 dias no seu centésimo aniversário, porque aqueles anos contêm 24 dias bissextos e não 25. 36,524 dividido por 365.25 é 99.997, então INT imprime 99 para uma pessoa de cem anos.
Dividir por 365 em vez de 365.25 falha na direção oposta, porque 365 é mais curto que um ano real. =INT((TODAY()-A2)/365) informa o próximo aniversário como já alcançado por tantos dias antes dele quanto a pessoa acumulou de dias bissextos: aproximadamente os últimos 10 dias de cada ano de idade de alguém de 40 anos cujos anos abrangem 10 dias bissextos. Nenhum dos dois defeitos é um artefato de arredondamento, então ROUND não consegue repará-lo. Use uma divisão para faixas de população e eixos de gráficos, onde um ano para mais ou para menos não muda nada; use a contagem de calendário quando o número descreve uma pessoa.
Calcular a idade no Excel
DATEDIF(start_date, end_date, unit) devolve o número inteiro de unidades de calendário completas entre duas datas. A unidade que transforma isso numa idade é "Y": anos completos, que cuida do comprimento dos meses, dos anos bissextos e do portão do aniversário sem que você escreva nenhuma lógica.
Anos completos com DATEDIF
Digite =DATEDIF(A2,TODAY(),"Y") ao lado da data de nascimento e formate o resultado como número geral. TODAY() mantém a fórmula viva: a coluna é recalculada quando a pasta de trabalho abre, então as idades se atualizam sozinhas.
Vale conhecer dois modos de falha. Se a data inicial for posterior à final — uma data de nascimento futura, ou dia e mês invertidos —, o DATEDIF devolve um erro em vez de um número negativo, o que é honesto. Um A2 em branco é pior: o Excel lê a célula vazia como o início do seu calendário de datas e não como dado ausente, então você recebe uma contagem enorme e sem sentido de anos em vez de uma célula vazia. Proteja com =IF(A2="","",DATEDIF(A2,TODAY(),"Y")).
As demais contagens saem diretamente da diferença de dias. O total de dias vividos é =TODAY()-A2 formatado como número. As semanas completas são =INT((TODAY()-A2)/7).
Se a data de nascimento for texto em vez de data
A subtração e o DATEDIF exigem datas seriais reais. Linhas coladas de uma exportação ou de um CSV costumam chegar como texto alinhado à esquerda, e o sinal é um erro em =A2+0. Converta no ponto de uso: =DATEDIF(DATEVALUE(A2),TODAY(),"Y").
DATEVALUE lê o texto usando suas configurações regionais, então 03/04/1990 é 4 de março em Londres e 3 de abril em Nova York. Se uma coluna inteira estiver deslocada por meses, reconstrua a data a partir das partes com =DATE(RIGHT(A2,4),MID(A2,4,2),LEFT(A2,2)), ajustado à ordem que você realmente tem, em vez de torcer para que o analisador concorde com você.
Idade no Excel em anos e meses
A escrita completa usa três chamadas de DATEDIF com três unidades, porque cada unidade responde a uma pergunta diferente. "Y" conta anos completos desde o nascimento, "YM" conta meses completos desde o último aniversário, por isso vai sempre de 0 a 11, e "MD" conta dias desde o último aniversário mensal:
=DATEDIF(A2,TODAY(),"Y")&" years, "&DATEDIF(A2,TODAY(),"YM")&" months, "&DATEDIF(A2,TODAY(),"MD")&" days"
Para só anos e meses — o pedido usual para uma criança pequena ou um aniversário de serviço —, elimine o terceiro termo: =DATEDIF(A2,TODAY(),"Y")&" years, "&DATEDIF(A2,TODAY(),"YM")&" months". O erro comum é usar "M" para o componente de meses. "M" devolve o total de meses completos desde o nascimento, centenas num adulto, não o resto.
O total de meses ainda vale conhecer como verificação cruzada: para datas comuns, =DATEDIF(A2,TODAY(),"M") dividido inteiro por 12 concorda com "Y", e MOD(DATEDIF(A2,TODAY(),"M"),12) concorda com "YM". Quando essas coincidirem com sua idade de três partes, a fórmula está certa e o que surpreendeu você foi a data de entrada.
Uma ressalva sobre o componente de dias. "MD" mede contra o dia do mês do aniversário, e o jeito como o Excel trata um dia do mês inicial maior que o permitido pelo mês final é uma particularidade antiga: nascimentos nos dias 29, 30 ou 31 podem reportar uma contagem de dias final estranha. As partes de anos e meses são confiáveis; se os dias parecerem errados, calcule-os você mesmo a partir do aniversário deslocado em vez de confiar em "MD" nessa linha.
Calcular a idade no Google Sheets
O Sheets implementa DATEDIF com os mesmos três argumentos e os mesmos códigos de unidade, então toda fórmula desta página é colada no Sheets sem mudanças. Não existe uma fórmula de idade separada do Sheets para aprender — apenas diferenças de ambiente.
As mesmas fórmulas
Idade exata: =DATEDIF(A2,TODAY(),"Y"). Idade completa: =DATEDIF(A2,TODAY(),"Y")&" years, "&DATEDIF(A2,TODAY(),"YM")&" months, "&DATEDIF(A2,TODAY(),"MD")&" days". Numa data que está em B2: =DATEDIF(A2,B2,"Y"). Sem DATEDIF: =YEAR(TODAY())-YEAR(A2)-(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))).
YEARFRAC, DATE, DATEVALUE e MOD todos existem com os mesmos significados, e TODAY() não leva argumentos como no Excel. Para impedir que uma idade se mova — um retrato que outras pessoas leem —, cole o resultado de volta sobre as fórmulas como valores, já que nada torna TODAY() estático.
Pegadinhas específicas do Sheets
Uma célula de resultado pode herdar um formato de data e mostrar a idade como uma contagem de dias desde o início do calendário, o que parece dado quebrado e é só formatação. Defina Formato como Número.
O texto que o Sheets não leu como data se comporta como no Excel: envolva-o em DATEVALUE ou construa-o com DATE(1990,5,15). O Sheets decide o que é uma data pelo idioma da própria planilha, não pelo de quem vê, então teste uma coluna suspeita multiplicando-a por 1 — uma data real gera um número de cinco dígitos, texto gera um erro. E, como no Excel, o DATEDIF dá erro quando a data inicial é posterior à final, então uma data de nascimento futura e uma entrada com dia e mês trocados parecem idênticas.
Idade numa data específica no Excel
Muitas vezes a pergunta não é a idade de hoje, mas a idade numa data de contratação, num vencimento, no início do ano letivo ou no prazo de um formulário. Substitua TODAY() pela data de referência e tudo acima funciona sem mudanças, porque o DATEDIF nunca se importa de onde veio a segunda data.
Usar uma célula de referência
Data de nascimento em A2, data de referência em B2, depois =DATEDIF(A2,B2,"Y"). Para a escrita completa, troque o segundo argumento nas três chamadas: =DATEDIF(A2,B2,"Y")&" years, "&DATEDIF(A2,B2,"YM")&" months, "&DATEDIF(A2,B2,"MD")&" days". Manter a data em B2 em vez de digitá-la dentro da fórmula é o que permite a uma coluna responder várias datas de referência de uma vez.
Para uma data fixa, construa-a com DATE para que as configurações regionais não possam reinterpretá-la: =DATEDIF(A2,DATE(2030,6,15),"Y"). Evite =DATEDIF(A2,"15/06/2030","Y"), porque o Excel resolve esse texto contra a máquina que lê o arquivo e a pasta de trabalho muda de comportamento quando outra pessoa a abre.
A fórmula que evita o DATEDIF segue a mesma substituição, com a data de referência duas vezes: =YEAR(B2)-YEAR(A2)-(B2<DATE(YEAR(B2),MONTH(A2),DAY(A2))).
Quando as duas datas não são nascimento e hoje
Uma idade é um caso especial de um intervalo entre duas datas: nascimento mais hoje. Quando a pergunta real é o tempo decorrido entre duas datas quaisquer — um período de contrato, uma estadia, um projeto —, o DATEDIF com a data anterior primeiro funciona, mas nada nele é específico de idade. A calculadora de diferença de datas deste site é a ferramenta feita para duas datas arbitrárias; a calculadora de idade foi feita do nascimento a hoje.
Calcular a idade sem DATEDIF
DATEDIF é incomum: a Microsoft nunca o listou na referência de funções, então ele não tem entrada de autocompletar nem construtor, sobrevive por compatibilidade entre planilhas, e alguns aplicativos não o implementam de forma nenhuma. A alternativa portável é uma subtração de anos com um teste de aniversário:
=YEAR(TODAY())-YEAR(A2)-(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2)))
Três movimentos. YEAR(TODAY())-YEAR(A2) é a resposta ingênua: a diferença em anos de calendário, certa depois que o aniversário passou e uma alta demais antes dele. DATE(YEAR(TODAY()),MONTH(A2),DAY(A2)) reconstrói o aniversário deste ano a partir das partes da data de nascimento. Então TODAY()<essa data é TRUE enquanto o aniversário está à frente, e subtrair TRUE o converte em 1 enquanto subtrair FALSE o converte em 0, de modo que o decréscimo acontece exatamente na janela anterior ao aniversário e em nenhum outro lugar.
Duas coisas a respeitar. A coerção é o mecanismo, então num aplicativo que recusa aritmética com valores lógicos use a forma verbosa IF(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2)),1,0) no lugar do teste entre parênteses. E, para uma data de nascimento em 29 de fevereiro, DATE(2023,2,29) se normaliza para 1 de março de 2023 porque o dia transborda um mês sem essa data, então o portão abre em 1 de março nos anos não bissextos. Estender este caminho aos meses residuais funciona, mas fica longo; se o seu aplicativo tem DATEDIF, use-o, e se você quer uma idade decimal, use YEARFRAC abaixo.
YEARFRAC e a idade decimal
YEARFRAC(start_date, end_date, basis) devolve a fração de um ano entre duas datas, então =YEARFRAC(A2,TODAY(),1) imprime algo como 39.42 para uma pessoa pouco mais de cinco meses depois do seu trigésimo nono aniversário, e INT dela dá os anos completos.
O argumento de base seleciona uma convenção de contagem de dias, e as convenções são financeiras e não de calendário. Real/real mede dias reais contra o comprimento médio dos anos abrangidos. Real/360 e real/365 dividem os dias reais por um ano nominal fixo. A família 30/360 finge que todo mês tem 30 dias, o que discrepa de um aniversário real e se acumula perto das fronteiras. Nomeie a base explicitamente: =YEARFRAC(A2,TODAY(),1). Não dependa de um padrão omitido, porque Excel e Google Sheets não precisam concordar sobre ele e o Sheets aceita menos códigos de base.
=INT(YEARFRAC(A2,TODAY(),1)) é o jeito honesto de extrair daí uma idade inteira, e para a maioria das datas de nascimento coincide com o DATEDIF; onde divergirem, o DATEDIF é o exato de calendário. Então trate YEARFRAC como a ferramenta decimal: seu uso real é quando você quer a fração em si — estatísticas ponderadas por idade, uma parcela proporcional, acumulação de tempo de casa, um modelo que trata a idade como contínua. E note que uma base real/365 divide por 365, e é por isso que ela deriva para cima exatamente como =INT((TODAY()-A2)/365) faz.
Calcular a idade em SQL
SQL é onde a fórmula ingênua não é meramente aproximada, mas sistematicamente errada, porque o clássico DATEDIFF conta travessias de fronteira em vez de unidades decorridas. Os mecanismos resolveram isso de forma diferente, então a resposta depende de em qual banco de dados você está.
SQL Server: DATEDIFF conta fronteiras de ano, não anos
DATEDIFF(datepart, start, end) devolve quantas vezes aquela datepart virou entre as duas datas. Quem nasceu em 31 de dezembro de 1990 dá DATEDIFF(year, birth, GETDATE()) = 34 em 1 de janeiro de 2024, porque foram cruzados 34 anos novos. A pessoa tem 33, tendo feito 33 no 31 de dezembro anterior. Qualquer pessoa cujo aniversário ainda não chegou neste ano sai exatamente um ano velha demais, e a consulta parece certa porque a função faz o que documenta.
A correção padrão subtrai um quando o aniversário não foi alcançado — o mesmo formato da fórmula do Excel que evita o DATEDIF, escrita como uma única instrução que você pode colar:
SELECT DATEDIFF(year, birth, GETDATE()) - CASE WHEN DATEADD(year, DATEDIFF(year, birth, GETDATE()), birth) > GETDATE() THEN 1 ELSE 0 END AS age FROM people;
O mecanismo é DATEADD: somar de volta a contagem ingênua de anos sobre a data de nascimento produz a data em que o aniversário de número N daquela pessoa cai. Se essa data ainda estiver à frente de hoje, a contagem passou de um. Prefira isso a comparar MONTH e números de dia à mão, porque trata aniversários de 29 de fevereiro sem ramificações extras.
Um detalhe de limitação: o SQL Server recua um dia de destino inválido para o último dia válido do mês, então DATEADD(year, 23, '2000-02-29') dá 28 de fevereiro de 2023 em vez de transbordar para março. Um aniversário de 29 de fevereiro, portanto, incrementa aqui um dia antes do que o DATEDIF do Excel faz num ano não bissexto.
SQL Server: anos, meses e dias
Aplique a mesma correção um nível abaixo. A contagem corrigida de meses completos é DATEDIFF(month, birth, GETDATE()) - CASE WHEN DATEADD(month, DATEDIFF(month, birth, GETDATE()), birth) > GETDATE() THEN 1 ELSE 0 END. Apelide-a como fm numa tabela derivada ou num CROSS APPLY para que a expressão seja escrita uma única vez.
A partir de fm as partes não precisam de mais lógica de datas: os anos são fm / 12 — ambos os operandos são inteiros, então o SQL Server trunca —, os meses restantes são fm % 12, e os dias são a sobra depois do deslocamento, DATEDIFF(day, DATEADD(month, fm, birth), GETDATE()). Essa trinca é exata, e é o que usar quando uma interface mostra uma idade em unidades mistas em vez de um inteiro puro.
MySQL e PostgreSQL
O TIMESTAMPDIFF do MySQL conta unidades completas e não precisa de correção: SELECT TIMESTAMPDIFF(YEAR, birth, CURDATE()) AS age FROM people. O total de dias é DATEDIFF(CURDATE(), birth) — esse DATEDIFF recebe a data posterior primeiro e devolve dias, uma função diferente da do SQL Server apesar do nome. Para unidades mistas, TIMESTAMPDIFF(MONTH, birth, CURDATE()) / 12 dá os anos e MOD(TIMESTAMPDIFF(MONTH, birth, CURDATE()), 12) os meses residuais.
O PostgreSQL é o mais direto, porque AGE devolve um intervalo de calendário: SELECT EXTRACT(YEAR FROM AGE(CURRENT_DATE, birth)) AS age dá anos completos exatos, e retirar o EXTRACT mostra a decomposição inteira em anos, meses e dias sem correção. Uma armadilha: AGE é sensível a fuso horário quando encontra um timestamp com zona, então converta essa coluna para date antes de compará-la com CURRENT_DATE.
Quando usar a calculadora de idade no lugar
Uma fórmula é o certo quando a idade é uma coluna numa tabela de centenas de linhas. É o formato errado quando você precisa da resposta uma vez e quer todos os números derivados junto, porque isso é seis fórmulas montadas para fazer o que uma página faz.
A calculadora de idade vinculada abaixo recebe uma data de nascimento e devolve idade exata em anos, meses e dias, total de dias vividos, semanas completas, horas e uma contagem regressiva até o próximo aniversário. Sua contagem de dias é a diferença bruta, então as unidades derivadas concordam entre si: o número de horas é dias vividos vezes 24, o que o torna uma medida de dias inteiros e não uma contagem precisa da hora do nascimento. Os signos do zodíaco chinês e ocidental vêm junto com a idade, o chinês resolvido contra datas reais do Ano-Novo Lunar e não contra 1 de janeiro, já que o ano chinês não começa no ano-novo gregoriano. Essa tabela cobre nascimentos de 1940 a 2030; fora dela a ferramenta recorre ao ano gregoriano, então trate o zodíaco de um nascimento anterior como não confiável.
Vale conhecer seus limites. Ela funciona só com datas, sem entrada de hora ou minuto. Usa o hoje do próprio dispositivo, então uma máquina com um relógio errado produz uma idade errada. Uma data de nascimento futura não é rejeitada; ela gera contagens negativas, então confira a data se os números parecerem impossíveis. A página declara que não serve para verificação de idade legal ou oficial, e nada do que você digita é armazenado ou enviado para qualquer lugar.
- Fórmulas para uma coluna de idades numa pasta de trabalho ou um campo numa consulta.
- A calculadora para uma pessoa: unidades completas, dias e semanas vividos, horas, contagem regressiva ao próximo aniversário.
- Zodíaco chinês sobre datas reais do Ano-Novo Lunar, confiável para nascimentos de 1940 a 2030.
- Não serve para verificação de idade legal ou oficial, nem tem precisão de hora do dia.
- Duas datas que não são nascimento e hoje: use em vez disso a calculadora de diferença de datas.
Perguntas frequentes
Qual é a melhor fórmula para calcular a idade a partir da data de nascimento no Excel?
=DATEDIF(A2,TODAY(),"Y") com a data de nascimento em A2. Ela conta anos de calendário completos, então o comprimento dos meses, os anos bissextos e o aniversário que ainda não chegaram são resolvidos por construção, e dá erro em vez de um número negativo se as datas estiverem na ordem invertida. Formate o resultado como número e confirme que A2 é uma data real: multiplique por 1 e você deve obter um número serial de cinco dígitos.
Por que não encontro o DATEDIF na lista de funções do Excel?
Porque a Microsoft nunca o documentou. A função existe para compatibilidade com planilhas antigas, então calcula de forma correta, mas não tem entrada de autocompletar, nem página de Ajuda em muitas versões e nem construtor de funções — e é por isso que as pessoas presumem que ela não está disponível e partem para uma divisão. Se você quer uma fórmula documentada e portável, use =YEAR(TODAY())-YEAR(A2)-(TODAY()<DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))).
Como mostro a idade em anos e meses no Excel?
Junte duas chamadas de DATEDIF com unidades diferentes: =DATEDIF(A2,TODAY(),"Y")&" years, "&DATEDIF(A2,TODAY(),"YM")&" months". "Y" dá os anos completos desde o nascimento, "YM" dá os meses completos desde o último aniversário e vai sempre de 0 a 11. Acrescente &", "&DATEDIF(A2,TODAY(),"MD")&" days" para a idade de três partes. O erro usual é "M" para o componente de meses: ele devolve o total de meses desde o nascimento, não o resto.
Dividir por 365.25 é uma forma precisa de calcular a idade?
Uma aproximação defensável e um fato não confiável. Um bloco de quatro anos com um dia bissexto abrange 1461 dias e 1461/4 é 365.25, então a constante tem base — mas o ano medio gregoriano é 365.2425, porque anos de século como 1900 e 2100 não são bissextos. O divisor é ligeiramente grande demais, então a estimativa corre atrás da idade verdadeira e o inteiro truncado sai um ano curto em intervalos que perderam um dia bissexto: 36,524 dias divididos por 365.25 dão 99 onde a idade é 100. Dividir por 365 deriva no outro sentido.
Como calculo a idade numa data específica em vez de hoje?
Use a data de referência onde as fórmulas usam TODAY(). Com a data de referência em B2: =DATEDIF(A2,B2,"Y") para os anos completos, ou =DATEDIF(A2,B2,"Y")&" years, "&DATEDIF(A2,B2,"YM")&" months" para duas partes. Para uma data fixa escreva =DATEDIF(A2,DATE(2030,6,15),"Y") em vez de uma data em texto, que é relida conforme as configurações regionais de quem abre o arquivo. Para duas datas que não são nascimento e hoje, uma calculadora de diferença de datas se encaixa melhor.
O Google Sheets calcula a idade do mesmo jeito que o Excel?
Sim. O Sheets suporta DATEDIF com argumentos e códigos de unidade idênticos, além de TODAY, YEARFRAC, DATE, DATEVALUE e MOD, então as fórmulas passam sem mudanças. A estranheza específica do Sheets é a exibição: uma célula que herda um formato de data mostra um número pequeno de idade como uma data perto do início do calendário, o que é só formatação. Defina Formato como Número. O Sheets também analisa as datas digitadas pelo idioma da própria planilha, não pelo de quem vê.
Posso usar YEARFRAC para calcular a idade?
Pode, se entender o valor devolvido. =YEARFRAC(A2,TODAY(),1) dá uma idade decimal como 39.42, e INT dela dá os anos completos, que coincidem com o DATEDIF para a maioria das datas de nascimento. A base escolhe uma convenção de contagem de dias — real/real, real/360, real/365, ou uma família 30/360 — e um divisor nominal de 360 ou 365 deriva contra o calendário do jeito que dividir por 365 faz. Nomeie a base 1 em vez de confiar num padrão, já que Excel e Sheets não precisam concordar e o Sheets suporta menos códigos.
Por que o DATEDIFF do SQL Server está errado para idade?
Ele não está quebrado, ele mede outra coisa: DATEDIFF(year, start, end) conta as fronteiras de ano cruzadas, não os anos completos decorridos, então uma pessoa nascida em 31 de dezembro de 1990 devolve 34 em 1 de janeiro de 2024 tendo 33. A correção padrão é DATEDIFF(year, birth, GETDATE()) - CASE WHEN DATEADD(year, DATEDIFF(year, birth, GETDATE()), birth) > GETDATE() THEN 1 ELSE 0 END. Somar a contagem ingênua de volta à data de nascimento dá aquele aniversário de número N, e se ele ainda está à frente de hoje a contagem passou de um.
Qual função SQL conta anos completos para a idade?
Depende do mecanismo. TIMESTAMPDIFF(YEAR, birth, CURDATE()) do MySQL conta unidades completas e não precisa de correção. AGE do PostgreSQL devolve um intervalo consciente do calendário, então EXTRACT(YEAR FROM AGE(CURRENT_DATE, birth)) é a idade inteira exata — converta antes uma coluna timestamp com zona para date. O DATEDIFF do SQL Server é o que precisa da correção com CASE. Cuidado com nomes compartilhados: o DATEDIFF do MySQL recebe a data posterior primeiro e devolve dias, ao contrário do contador de fronteiras de três argumentos do SQL Server.
Existe uma ferramenta gratuita que dá idade exata, dias vividos e zodíaco?
A calculadora de idade vinculada nesta página recebe uma data de nascimento e devolve idade exata em anos, meses e dias, total de dias vividos, semanas completas, horas e uma contagem regressiva até o próximo aniversário, além dos signos do zodíaco chinês e ocidental. O signo chinês usa datas reais do Ano-Novo Lunar, confiável para nascimentos de 1940 a 2030. Ela funciona só com datas, usa a data do seu dispositivo, não se destina a verificação de idade legal ou oficial, e roda no seu navegador sem enviar nada a um servidor.
Como sei há quantos dias, semanas ou horas estou vivo?
Subtraia a data de nascimento de hoje: o total de dias é o único número que sai exato a partir de duas datas. As semanas completas são esse número dividido por 7, e as horas são os dias vezes 24. Não use uma fórmula de idade em anos para isso: o ano é uma duração variável (bissextos incluídos), enquanto dias, semanas e horas são contagens fixas. A calculadora vinculada acima mostra dias, semanas e horas vividas de uma só vez.
Como calcular a idade exata em anos, meses e dias sem escrever fórmulas?
Digite sua data de nascimento na calculadora de idade desta página: ela devolve a idade em anos, meses e dias completos usando o calendário real, não uma divisão aproximada, e ainda acrescenta a contagem regressiva até o seu próximo aniversário. Para duas datas quaisquer que não sejam um nascimento (um prazo, um aniversário), use a calculadora de diferença de datas do site.