CREATE function dbo.IsDateAHoliday
(
@CurDate datetime
)
returns int
as
begin
declare @ret int
select @ret = 0
select @ret = case
when datepart(yy,@CurDate) = 2004 and datepart(mm,@CurDate) = 1 and datepart(dd,@CurDate) = 1 then 1
when datepart(yy,@CurDate) = 2004 and datepart(mm,@CurDate) = 7 and datepart(dd,@CurDate) = 4 then 1
when datepart(yy,@CurDate) = 2004 and datepart(mm,@CurDate) = 9 and datepart(dd,@CurDate) = 1 then 1
when datepart(yy,@CurDate) = 2004 and datepart(mm,@CurDate) = 11 and datepart(dd,@CurDate) = 22 then 1
when datepart(yy,@CurDate) = 2004 and datepart(mm,@CurDate) = 12 and datepart(dd,@CurDate) = 24 then 1
when datepart(yy,@CurDate) = 2004 and datepart(mm,@CurDate) = 12 and datepart(dd,@CurDate) = 25 then 1
when datepart(yy,@CurDate) = 2003 and datepart(mm,@CurDate) = 1 and datepart(dd,@CurDate) = 1 then 1
when datepart(yy,@CurDate) = 2003 and datepart(mm,@CurDate) = 7 and datepart(dd,@CurDate) = 4 then 1
when datepart(yy,@CurDate) = 2003 and datepart(mm,@CurDate) = 9 and datepart(dd,@CurDate) = 1 then 1
when datepart(yy,@CurDate) = 2003 and datepart(mm,@CurDate) = 11 and datepart(dd,@CurDate) = 22 then 1
when datepart(yy,@CurDate) = 2003 and datepart(mm,@CurDate) = 12 and datepart(dd,@CurDate) = 24 then 1
when datepart(yy,@CurDate) = 2003 and datepart(mm,@CurDate) = 12 and datepart(dd,@CurDate) = 25 then 1
else 0
end
return @ret
end
|
CREATE function dbo.GetBusinessDays
(
@StartDate datetime,
@EndDate datetime
)
returns int
as
begin
declare @DaysBetween int
declare @BusinessDays int
declare @Cnt int
declare @EvalDate datetime
select @DaysBetween = 0
select @BusinessDays = 0
select @Cnt=0
select @DaysBetween = datediff(Day,@StartDate,@endDate) + 1
while @Cnt < @DaysBetween
begin
select @EvalDate = @StartDate + @Cnt
if (dbo.IsDateAHoliday(@EvalDate) = 0)
BEGIN
if ((datepart(dw,@EvalDate) <> 1) and (datepart(dw,@EvalDate) <> 7))
BEGIN
select @BusinessDays = @BusinessDays + 1
END
END
select @Cnt = @Cnt + 1
end
return @BusinessDays
end
|