Return the Count of Monday between two date
....
....
Return the Count of Sunday 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 */