Creazione di una funzione che controlli se un anno è un anno bisestile
Questa semplice funzione controlla l'anno trascorso e restituisce vero o falso in base dall'anno utilizzando solo una riga di codice
Utilizzo
Questa piccola funzione e' normalmente chiamata da un altro database in uso per calcolare l'eta' e la differenza di anni.
Quand eseguite 'DATEPART DAYOFYEAR' e comparate il numero di giorni dal 3 di marzo e selezionate un anno bisestile vi ritornera' un giorno extra, il che e' corretto ma richiede ulteriore lavoro per calcolare l'eta' di un individuo.
Per aggirare questo problema, Implementiamo la funzione per far si che possa sottrarre un giorno se la data e' dopo il 29 di Febbraio.
Get Leap Year
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
Test
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]
Risultato
Nell'esempio qui sopra riportato solo 1904 ritornera' 'True' come valore.