Technical Article

Return the Count of WeekDay between two date

,

Return the Count of Monday between two date
....
....
Return the Count of Sunday between two date

/*
playyuer@Microshaoft.com Invent
*/create function udf_WeekdayDiff(@Weekday integer,@BeginDate datetime,@EndDate datetime)
returns integer
begin
--@Weekday: 1 = Monday , ... ,7 = Sunday
return (select datediff(week,@BeginDate,@EndDate) + case when (@@datefirst + datepart(weekday,@BeginDate)) % 7 + case when (@@datefirst + datepart(weekday,@BeginDate)) % 7 = 0 then 7 else 0 end > @Weekday % 7 + 1 then 0 else 1 end - case when (@@datefirst + datepart(weekday,@EndDate)) % 7 + case when (@@datefirst + datepart(weekday,@EndDate)) % 7 = 0 then 7 else 0 end >= @Weekday % 7 + 1 then 0 else 1 end)
end

/* test:

declare @b datetime
declare @e datetime

set @b = '2004-07-29'
set @e = '2004-09-05'

select @b as BeginDate ,@e as EndDate
,dbo.udf_WeekdayDiff(1,@b,@e) as Monday
,dbo.udf_WeekdayDiff(2,@b,@e) as Tuesday
,dbo.udf_WeekdayDiff(3,@b,@e) as Wednesday
,dbo.udf_WeekdayDiff(4,@b,@e) as Thursday
,dbo.udf_WeekdayDiff(5,@b,@e) as Friday
,dbo.udf_WeekdayDiff(6,@b,@e) as Saturday
,dbo.udf_WeekdayDiff(7,@b,@e) as Sunday

*/

Rate

5 (2)

You rated this post out of 5. Change rating

Share

Share

Rate

5 (2)

You rated this post out of 5. Change rating