Como calcular a idade de uma pessoa no SQL Server?

08/01/2016

0

Sou iniciante no SQL e estou tendo uma série de dificuldades, entre preciso saber o seguinte:

Em uma consulta SQL, qual a melhor forma de se calcular a idade de uma pessoa em formato inteiro no SQL?


Obrigado!
Ferreira

Ferreira

Responder

Post mais votado

08/01/2016

Segue a expressão:

SELECT FLOOR(DATEDIFF(DAY, DataNascimento, GETDATE()) / 365.25)


Há casos em que se a pessoa faz aniversário no dia seguinte ao dia atual, a query considerando as horas irá informar como se a pessoa já tivesse feito aniversário, quando na verdade não fez (a não ser que ela seja executada exatamente no horário 00:00).


Abraço!

Nilton Braz

Nilton Braz
Responder

Mais Posts

08/01/2016

Joaci Gomes

Qual seria o contexto exatamente?

Tenta isso:

SELECT YEAR(dHoje)-YEAR(dNasc)-IIF(MONTH(dHoje)*32+DAY(dHoje)<MONTH(dNasc)*32+DAY(dNasc),1,0)


Pra ñ ter problems c/ o arredondamento, fórmulas, etc...


PS: Depois diz se deu certo?
Responder

08/01/2016

Ferreira

Joaci, obrigado por responder, mas não entendi o porquê do 32, pois um mês não tem 32 dias.


Atenciosamente,
Responder

08/01/2016

Joaci Gomes

Vc pode trok o dHoje por GETDATE() (CURDATE() no MySQL) ou msmo CURRENT_TIMESTAMP qndo for aplikr na base de dad0s. Fiz c/ variáveis o exemplo p/ q se possa testr de maneira fácil usando DECLARE (mas lembre de colocar @ antes das variáveis).

Notas:

Usei 32 como multiplicador do mês apenas como boa prática (potência de 2), mas sendo de 31 pra cima está ok;

Como não consideramos hora no cálculo de idade, o IIF está ajustado p/ que o numero de anos de idade "suba" exatamente no dia do aniversário do usuário;

Lembre-se de que neste caso estamos considerando o aniversário dos nascidos em 29 de fevereiro como sendo 1 de março nos anos não bissextos. Caso prefira de outra forma provavelmente vai ter que acrescentar uma condição especial para isso;

Caso queira usar isso em outros "dialetos" de SQL, como no MySQL por exemplo, troque o IIF por IF.
Responder

08/01/2016

Alan Mario

Como pegar esse valor e salvar, criando um novo campo?
Responder

12/01/2016

Ferreira

Obrigado galera!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar