Como calcular a idade de uma pessoa no SQL Server?
08/01/2016
0
Em uma consulta SQL, qual a melhor forma de se calcular a idade de uma pessoa em formato inteiro no SQL?
Obrigado!
Ferreira
Post mais votado
08/01/2016
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
Mais Posts
08/01/2016
Joaci Gomes
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?
08/01/2016
Ferreira
Atenciosamente,
08/01/2016
Joaci Gomes
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.
Clique aqui para fazer login e interagir na Comunidade :)