Published on

May 9, 2018

Comprendiendo el cálculo de la edad en SQL Server

Bienvenido a nuestro artículo sobre el cálculo de la edad en SQL Server. En este artículo, discutiremos un algoritmo para calcular correctamente la edad y presentaremos un script T-SQL que implementa este algoritmo.

En la primera parte de esta serie, describimos el algoritmo y proporcionamos un script que calcula la edad basada en múltiples partes de la fecha. En esta segunda parte, diseñaremos una función que implementa este algoritmo de cálculo de edad.

Para que el script sea funcional, necesitamos agregar dos características más. Primero, la capacidad de manejar la edad “invertida”, donde la fecha de “Hoy” es anterior a la “Fecha de Nacimiento” (como en referencias históricas antes de Cristo). Segundo, la capacidad de aceptar un parámetro que especifique qué partes de la fecha contar.

Para manejar la edad invertida, modificamos la tabla derivada más interna en el script. Ahora, la [FechaDesde] siempre será menor o igual a [FechaHasta], y la columna [Dirección] indica el caso de “edad invertida”.

Para el segundo requisito, podemos implementarlo de varias formas. Una opción es usar un conjunto de parámetros que definan qué partes de la fecha contar. Otra opción es usar una cadena binaria de bits, donde cada bit representa una parte de la fecha. En este artículo, usaremos una cadena literal compuesta por códigos de una sola letra que representan partes de la fecha (por ejemplo, Y para años, M para meses, D para días, etc.).

Comencemos calculando el número de años completos:


-- Ejemplo de código aquí

Esto nos dará el mismo resultado que en la primera parte del artículo. Tenemos 4 años completos, y la nueva “FechaDesde” representa la fecha en la que se alcanza la edad de 4 años.

Ahora, eliminemos el código “Y” del parámetro @Unidades:


-- Ejemplo de código aquí

Como era de esperar, obtenemos 0 años y la fechaDesde permanece igual a @FechaNacimiento.

A continuación, calculemos los meses:


-- Ejemplo de código aquí

Los cálculos para los registros “Tally” requeridos se vuelven un poco más complicados. Si no contamos los años en la etapa anterior, necesitamos el número total de meses entre FechaDesde y FechaHasta. De lo contrario, solo necesitamos 12 registros de tally.

Ahora, agreguemos otra capa y calculemos los días:


-- Ejemplo de código aquí

Para el mismo conjunto de parámetros, obtenemos el resultado que esperamos.

La última parte de nuestro problema es analizar la parte de tiempo en partes de tiempo separadas, dependiendo de la presencia de códigos de partes relevantes en el parámetro @Unidades. Esta parte es sencilla y no requiere un “bucle de tally”.

Finalmente, necesitamos multiplicar todas las partes de edad calculadas por [Dirección] para tener en cuenta la dirección del cálculo de la edad.

Con todas las piezas en su lugar, nuestra función está lista. Puede encontrar el script completo adjunto a este artículo, que también incluye un ejemplo de un script de prueba para verificar diferentes escenarios.

Conclusión

En este artículo, hemos presentado un método para el cálculo de la edad en SQL Server que evita “saltos de día” en la secuencia de crecimiento de la edad. Este método nos permite representar la edad en conjuntos variables de unidades de fecha y hora. También hemos implementado este método en una función de tabla en línea de T-SQL.

Además de su aplicación directa, este método también se puede utilizar para otros fines. Por ejemplo, al calcular la edad en “Años-Días”, podemos convertir fechas del calendario a fechas julianas (YYYYDDD) y viceversa.

Esperamos que haya encontrado este artículo informativo y útil. ¡Buena suerte explorando nuevos horizontes en SQL Server!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.