Los cálculos con fecha son comunes en la mayoría de las aplicaciones que usan bases de datos, estos cálculos se utilizan en: fechas de vencimientos, cálculos de interés, cumpleaños o el número de días que alguien ha estado en el hospital.
Las funciones de fechas de SQL Server realizan conversiones automáticamente de los tipos CHAR o VARCHAR a los tipos DATETIME o SMALLDATETIME según sea el caso. Para mostrar ejemplos con las funciones de fecha SQL utilizare una tabla con el siguiente diseño:
Algo importante que debe tenerse en cuenta, es que SQL Server trata cualquier fecha con dos dígitos en el año si son menores a 50 como años del siguiente siglo. Ejemplo:
Y a las fechas con los dos dígitos en el año mayores a 50 como años del siglo actual. Ejemplo:
Debido a esto, para evitar problemas en las operaciones siempre es recomendable trabajar las fechas con 4 dígitos, como lo muestro en los siguientes ejemplos.
Las funciones de fecha
Antes de trabajar con las funciones de fechas es necesario entender los componentes de los tipos de dato fecha.
Bien a continuación muestro los ejemplos con las funciones de fecha.
La función DATEADD
Esta función permite agregar un intervalo de tiempo a una fecha para obtener la suma del intervalo de tiempo y la fecha a la que se le aplica la función. Por ejemplo
La función DATEDIFF
Esta función regresa la diferencia entre dos fechas según la parte de la fecha que se especifique. Ejemplo:
La función DATENAME
Esta función regresa una cadena representando el nombre de la parte de la fecha que se especifique. Ejemplo:
La función DATEPART
Este función regresa el valor entero de la parte de la fecha que se especifique. Ejemplo:
La función GETDATE
Esta función regresa la fecha y la hora actual del servidor. Ejemplo:
Las funciones DAY, MONTH, y YEAR
Estas funciones regresan el entero correspondiente de la fecha en la cual se aplique la función, en rigor de verdad estas funciones tienen su equivalencia con la función DATEPART, por ejemplo: la función DAY es equivalente a DATEPART(dd,fecha), la función MONTH equivale a DATEPART(mm,fecha) y así lo mismo para la función YEAR que equivale a DATEPART(yy,fecha).