"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo calcular con precisión la edad en años desde una fecha de nacimiento en SQL Server?

¿Cómo calcular con precisión la edad en años desde una fecha de nacimiento en SQL Server?

Publicado el 2025-03-23
Navegar:423

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

Calcule con precisión la edad de la fecha de nacimiento en el servidor SQL

pregunta:

¿Cómo convertir la fecha de nacimiento almacenada como Nvarchar (25) en una fecha en SQL Server y luego calcular su edad correspondiente en años?

muestra datos:

IDENTIFICACIÓN Nombre doB
1 John 1992-01-09 00:00:00
2 Salida 1959-05-20 00:00:00

Salida esperada:

]
IDENTIFICACIÓN Nombre EDAD doB
1 John 31 1992-01-09 00:00:00
2 Salida 64 1959-05-20 00:00:00

Respuesta: Calcule con precisión la edad

]]

El enfoque propuesto inicialmente enfrenta desafíos al considerar las irregularidades de los años y días de salto. Las versiones modernas de SQL Server nos proporcionan técnicas mejoradas para abordar estas complejidades.

la mejor manera de calcular la edad de los enteros:

Este método es simple y directo, pero la precisión puede ser ligeramente menor que el método decimal.

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

la mejor manera de calcular la edad de los decimales:

Este método usa la función fatediff y la instrucción case para calcular con precisión la edad, y considere si el cumpleaños ha pasado en ese año.

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

Tenga en cuenta que el código anterior supone que la columna doB se ha convertido al tipo date . If doB es todavía del tipo nvarchar (25) , debe agregar una conversión de tipo en la consulta, por ejemplo: convert (date, doB, 120) . Elegir el estilo de conversión apropiado depende del formato específico de sus datos dob . Por ejemplo, convert (fecha, doB, 120) es adecuado para el formato 'aaayyy-mm-dd hh: mi: ss'. Es posible que deba ajustar esta sección para adaptarse a su formato de datos. La consulta final debe ser similar a:

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

reemplazar YourTable con el nombre de su tabla. El método de elegir un entero o decimal depende de sus requisitos de precisión. El método decimal es más preciso, pero el método entero es más conciso.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3