SQL计算两个日期之间的工作天数(除过周六日的天数)

计算两个日期之前的工作天数,可通过编写如下函数实现:

createFUNCTION [dbo].[f_workday](
 @dt_begin datetime,  --计算的开始日期
 @dt_end  datetime    --计算的结束日期
 )RETURNS int
 AS
 BEGIN
 DECLARE @i int, @j int,@s  datetime
 set @i = 0
 set @j = 0

set @s=@dt_begin
 while @s <= @dt_end

 begin

 if datename(weekday,@s) = '星期六'
  begin
   set @j= @j+1
  end 
 else if datename(weekday,@s) = '星期日'
  begin
   set @j= @j+1
  end 
 else
 begin
   set @i = @i+1


 end
set @s=@s+1
 end
 return @i
 END

 

 

例如计算'2013-07-27'与'2013-07-29'之间的工作天数,执行如下语句即可:
  select dbo.f_workday('2013-07-27','2013-07-29')

编程技巧