yanghongjun 发表于 2015-7-4 10:29:34

一般性工作时间计算存储过程(SQL SERVER)

在统计工作效率的时候,只计算工作时候非常重要
写了一个一般性工作时间计算的函数


CREATE   FUNCTION fun_GetWorkMinute
(
   @startDate DATETIME ,
   @endDate DATETIME
)
RETURNS int
AS
begin
    declare @DayMinute int,@s_Minute int,@s_Minute2 int
    set @DayMinute = 7*60    --一天工作7个小时
    set @s_Minute = 11*60 + 30   --上午11:30下班
    set @s_Minute2 = 14*60      --下午14上班
    declare @minute int,@day int,@totalDay int
    set @minute = 0
    if @startDate is not null and @endDate is not null
    begin
      set @totalDay = datediff(day,@startDate,@endDate)
      set @day = @totalDay/7 ---周
      if @day > 0
            set @minute = @minute + @day*5* @DayMinute
      declare @sM int,@sM2 int
      set @sM = datepart(hour,@startDate)*60 + datepart(minute,@startDate)
      set @sM2 = datepart(hour,@endDate)*60 + datepart(minute,@endDate)
      set @day = @totalDay - @day * 7
      if @day > 0
            set @minute = @minute + @day* @DayMinute
      --同一个上下午段,非工作时间也类同
      if (@sM >= @s_Minute2 AND@sM2 >= @s_Minute2) or(@sM
页: [1]
查看完整版本: 一般性工作时间计算存储过程(SQL SERVER)