Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema no resultado da idade

Ao executar o comando conforme a resposta notei que existe um problema a função "DATADIFF" como está sendo usada faz o cálculo da diferença dos anos, não levando em conta dia e mês, logo se o cliente ainda não fez aniversário ela dará a idade como se já tivesse feito, pelo que pude pesquisar existem várias maneiras para resolver esse problema, a que me pareceu mais fácil de entender foi a seguinte:

YEAR(getdate())-YEAR([data de nascimento])- IIF(MONTH(getdate())32+DAY(getdate())<MONTH([data de nascimento])32+DAY([data de nascimento]),1,0)

Caso exista alguma maneira mais simples ficaria feliz em conhece-la.

Muito Obrigado

1 resposta
solução!

Olá Roger, tudo bem? É verdade, a formula que é apresentada no curso desconsidera o mês e o dia de nascimento. Essa é uma forma muito precisa e evita cálculos e arrendondamentos, acho que uma outra alternativa seria utilizando o FLOOR para fazermos o arredondamento sempre para o maior inteiro juntamente com o DATEDIFF dividindo o resultado por 365.25, para que possamos abranger também o ano bissexto, da seguinte forma:

SELECT [CPF], [IDADE], [DATA NASCIMENTO],
    FLOOR(DATEDIFF(DAY, [DATA NASCIMENTO], GETDATE()) / 365.25)
FROM CLIENTES

Espero ter ajudado!