"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como calcular com precisão a idade em anos a partir de uma data de nascimento no SQL Server?

Como calcular com precisão a idade em anos a partir de uma data de nascimento no SQL Server?

Postado em 2025-03-23
Navegar:396

How to Accurately Calculate Age in Years from a Date of Birth in SQL Server?

calcule com precisão a idade da data de nascimento no SQL Server

pergunta:

Como converter a data de nascimento armazenada como nvarchar (25) em uma data no SQL Server e depois calcular sua idade correspondente em anos?

Dados de amostra:

EU IA Nome DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00

saída esperada:

]
EU IA Nome IDADE DOB
1 John 31 1992-01-09 00:00:00
2 Sally 64 1959-05-20 00:00:00

Resposta: Calcule com precisão a idade

]

A abordagem inicialmente proposta enfrenta desafios ao considerar as irregularidades dos anos bissextos e dias de mês. As versões modernas do SQL Server nos fornecem técnicas aprimoradas para abordar essas complexidades.

A melhor maneira de calcular a idade dos números inteiros:

Este método é simples e direto, mas a precisão pode ser um pouco menor que o método decimal.

SELECT
    (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) 

A melhor maneira de calcular a idade dos decimais:

Este método usa a função datdiff e a instrução case para calcular com precisão a idade e considere se o aniversário já passou naquele ano.

SELECT
    DATEDIFF(year, DOB, GETDATE()) - CASE WHEN MONTH(GETDATE()) 

Observe que o código acima assume que a coluna DOB foi convertida para date tipo. Se DOB ainda é do nvarchar (25) TIPO, você precisa adicionar uma conversão de tipo na consulta, por exemplo: convert (data, DOB, 120) . A escolha do estilo de conversão apropriada depende do formato específico do seu DOB DATA. Por exemplo, convert (data, DOB, 120) é adequado para o formato 'AAAA-MM-DD HH: MI: SS'. Pode ser necessário ajustar esta seção para se adequar ao seu formato de dados. A consulta final deve ser semelhante a:

SELECT
    DATEDIFF(year, CONVERT(DATE, DOB, 120), GETDATE()) - CASE WHEN MONTH(GETDATE()) 

substitua yourtable com o nome da sua tabela. O método de escolher um número inteiro ou decimal depende dos seus requisitos de precisão. O método decimal é mais preciso, mas o método inteiro é mais conciso.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3