Crear una función para comprobar si un año es bisiesto
Esta sencilla función comprueba el año introducido y devuelve verdadero o falso dependiendo del año con una línea de código
Esta función se utiliza normalmente para otras operaciones de base de datos que calculan diferencias de edad y año.
Cuando se ejecuta DATEPART DAYOFYEAR y se compara el número de días del 3 de marzo, un año bisiesto devolverá un día más, lo cual es correcto, pero debe codificarse para calcular la edad de alguien.
Para evitarlo, añadimos esta función a una de las fechas para restar un día después del 29 de febrero.
CREATE FUNCTION Dates.GetLeapYear(@Date DATETIME2) RETURNS BIT AS BEGINDECLARE @Ret BIT=(CASE WHEN DATEPART(YEAR,@Date)%4<>0 OR (DATEPART(YEAR,@Date)%100=0 AND DATEPART(YEAR,@Date)%400<>0) THEN 0 ELSE 1 END)RETURN @RetENDGO
SELECT [dbo].[GetLeapYear]('01-01-1900') [1900],[dbo].[GetLeapYear]('01-01-1901') [1901],[dbo].[GetLeapYear]('01-01-1902') [1902],[dbo].[GetLeapYear]('01-01-1903') [1903],[dbo].[GetLeapYear]('01-01-1904') [1904]
Sólo 1904 devolverá "verdadero", como era de esperar.