1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| Create Function [dbo].[JourFerie] (@Date Datetime) returns Bit
AS
Begin
Declare @Jour as integer
Declare @Mois as integer
Declare @Annee As Integer
Declare @Resultat as Bit
Declare @NbOr as integer
Declare @Epacte as integer
Declare @DatePLune as datetime
Declare @LundiPaques as datetime
Declare @JeudiAscension as datetime
Declare @LundiPentecote as datetime
set @Jour = Day(@date)
set @Mois = Month(@date)
set @Annee = Year(@date)
set @NbOr = (@Annee % 19) + 1
set @Epacte = (11 * @NbOr - (3 + round((2 + Round(@Annee / 100,0)) * 3 / 7,0))) % 30
set @DatePLune = dateadd(day,((@Epacte + 6) % 30) * -1, cast('19/04/' + cast(@Annee as varchar(4)) as datetime))
set @DatePLune = dateadd(day, case when @Epacte = 24
or (@Epacte = 25 and @Annee >= 1900 and @Annee < 2000 )
then - 1
else 0
end, @DatePLune)
set @LundiPaques = dateAdd(day, 8 - datepart(weekday,@DatePLune), @DatePLune)
set @JeudiAscension = dateadd(day,38,@LundiPaques)
set @LundiPentecote = dateadd(day,11,@JeudiAscension)
set @Resultat =
Case
when left(convert(varchar(10),@Date,103),5)
in ('01/01','01/05','08/05','14/07','15/08','01/11','11/11','25/12')
or @Date in (@LundiPaques,@JeudiAscension,@LundiPentecote) then 1
else 0
end
return @Resultat
end
GO |
Partager