1
resposta

Dúvida

Pessoal, tomando como exemplo o cliente listado no script abaixo, disponibilizado em aula, ele informa que o cliente tem 28 anos de idade, quando na verdade ele tem 27 anos de idade, logo o script precisa ser revisado:

SELECT NOME, DATA_DE_NASCIMENTO, DATEDIFF(YEAR, DATA_DE_NASCIMENTO, GETDATE()) AS IDADE FROM TABELA_DE_CLIENTES WHERE NOME = 'Edson Meilelles';

Script com o ajuste:

SELECT NOME, DATA_DE_NASCIMENTO, CAST(DATEDIFF(DAY, DATA_DE_NASCIMENTO, GETDATE()) / 365.25 AS INT) AS IDADE  FROM TABELA_DE_CLIENTES WHERE NOME = 'Edson Meilelles';
1 resposta

Oii, Ricardo! Tudo bem?

Desculpa pela demora em responder a você.

Obrigada por trazer esse ponto de que observou, é super válido!

Quando usamos função DATEDIFF com o argumento YEAR para calcular a diferença entre anos de duas datas, não consideramos se a data atual já passou do dia de aniversário da pessoa ou não. E isso pode resultar em uma diferença de um ano, dependendo do momento da consulta.

Uma sugestão para você usar, é calcular a diferença em dias entre as datas e dividir pela quantidade de dias do ano (lembre-se que temos anos bissextos). Porém, nem sempre vai sair com precisão, pois em alguns anos temos 365, 365.25 e outros 366 dias. E em conjunto, use a função CASE, que tem a finalidade de avaliar condicionalmente os dados e retornar valores baseando-se nessas condições.

Deixo o link da documentação da Microsoft que contém informações explicativos sobre o uso dessa função:

A página pode abrir em Inglês, caso não se sinta confortável com o idioma, clique com o botão direito em qualquer canto da página e escolha a opção "Traduzir para o português".

Espero ter ajudado. Caso tenha dúvidas, não hesite em recorrer ao fórum.

Bons estudos, Ricardo!