2
respostas

Dúvida store procedure para Calcular idade

Olá pessoal, boa tarde!

Pretendo desenvolver uma Query /Procedure que actualiza a idade de forma precisa. Por exemplo, que consegue diferenciar a idade de quem nasceu em 21 Janeiro de 2020 (já completa 20 anos) e que nasceu depois dessa data (não completa 20 anos). Coloquei essa questão porque ao executar a Query que enviei o resultado para quem nasceu em 2020 é sempre 20 ANOS, quando há quem ainda tenha 19 anos.

---Segue o código
CREATE PROCEDURE CalculaIdade
AS
BEGIN
    UPDATE [TABELA DE CLIENTES] SET IDADE = 
        DATEDIFF(YEAR, [DATA DE NASCIMENTO], GETDATE())
END

Saudações

2 respostas

Olá Joao, tudo bem? Bem você quis dizer quem "nasceu em 21 de Janeiro de 2000" é isso? Eu não entendi muito bem o que você deseja, você poderia explicar melhor? Você quer atualizar o campo idade de acordo com a data de nascimento é isso? Bem sobre essa função DATEDIFF que você executou, ela retorna apenas um valor inteiro da diferença entre o datepart inicial e o datepart final, sendo assim o inicio é a data de nascimento e o final é a data atual, porém você só está considerando apenas o ANO (YEAR) no DATEDIFF, então não importa o mês ou dia que o cliente nasceu, apenas o ano. Logo se ele nasceu no ano 2000 a idade vai ser atualizada para 20 anos, não importando se ele só completa 20 anos no dia 10 de Julho, essa query já vai atualizar a idade pra 20 anos. Mais explica melhor o que você deseja e agente tentar encontrar uma solução!

Boa tarde Jonilson, Muito obrigado pelo resposta. De facto, pretendo saber como colocar o ano, mês e dia na função DATEDIFF de modo a calcular a idade com maior precisão.