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