1
resposta

Resolução e dúvida

Segue minha resolução

SELECT DATEDIFF(YEAR, [DATA_DE_NASCIMENTO], GETDATE()) AS IDADE_CLIENTE, * FROM [TABELA_DE_CLIENTES];

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Em paralelo, fiz uma consulta com a Luri, mas fiquei com uma dúvida. Ela me disse que eu poderia utilizar dois filtros, no caso, o ano e mês, para verificar se a pessoa já fez aniversário, utilizando o case. Como faço isso?

1 resposta

Olá, Rafael, tudo bem?

Sim, para este caso você pode usar a função CASE junto com MONTH e DAY para verificar o mês e o dia de nascimento.

O código seria:

SELECT 
    CASE 
        WHEN MONTH(GETDATE()) > MONTH(DATA_DE_NASCIMENTO) 
            OR (MONTH(GETDATE()) = MONTH(DATA_DE_NASCIMENTO) AND DAY(GETDATE()) >= DAY(DATA_DE_NASCIMENTO))
        THEN DATEDIFF(YEAR, DATA_DE_NASCIMENTO, GETDATE())
        ELSE DATEDIFF(YEAR, DATA_DE_NASCIMENTO, GETDATE()) - 1
    END AS IDADE_CORRETA,
    * 
FROM 
    TABELA_DE_CLIENTES;

Neste código, verificamos se o mês atual é maior que o mês de nascimento ou se é o mesmo mês e o dia atual é maior ou igual ao dia de nascimento. Se uma dessas condições for verdadeira, a pessoa já fez aniversário no ano atual, caso contrário, subtraímos um ano da idade calculada.

Espero ter ajudado.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado