反对楼主的这个构思
不可以单纯用一个sql语句解决这个问题
因为还有法定节假日的问题
所以建议楼主专门建立一个日期的表,
字段有公历日期,农历日期,农历是否闰月,是否工作日注:因为每个单位放假不一定的,所以当天是否工作日可以在表中事先调整好。然后再对某一时间段内具体的工作日天数进行汇总。注:我也在帮公司的人事部门做考勤数据汇总的,记得劳动法上说一个月的法定工作日设置为20.92天吧。

解决方案 »

  1.   

    create function countday(@enddate datetime)
    returns int
    as 
    begin
      
      declare @i int
      declare @J int
      declare @m int
      set @m = 0 
      set @j = 0
      select @i = datediff(d,convert(varchar(8),@enddate,120)+'01',@enddate)
      if @I <=0 
        return 0
      else
        begin
          while @i > 0
          begin
            set @m = datepart(dw,convert(varchar(8),@enddate,120)+right(100+@i,2)) 
            if (@m > 1 and @m < 7) set @j = @J + 1
            set @i = @i - 1
          end
        end  return @j
    end goselect convert(varchar(2),dbo.countday('2006-02-11')) +'/22'/*----- 
    8/22*/
    drop function countday