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.
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