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