计算日期之间的工作时间,排除休息时间和外班时间

时间:2014-01-02 03:52:18

标签: sql sql-server

我正在处理有计数器运行的应用程序,现在我们需要在休息时间和外班时间停止这些计数器。 使用SQL 2008.目前我在SQL中有以下内容:

  1. 上次活动开始日期和Event_Stop_Date / Current_Date(如果活动未停止)
  2. 班次表:SHIFT(ShiftID INT,Start_Time TIME(0),End_Time TIME(0))
  3. 中断表:BREAK(BreakID INT,Start_Time TIME(0),End_Time TIME(0))

    Data in SHIFT TABLE
    1   1st 07:20:00    15:20:00
    2   2nd 15:20:00    23:20:00
    3   3rd 23:20:00    07:20:00
    
    Data in BREAK TABLE
    1   1st Shift - 1st break   09:10:00    09:25:00
    2   1st Shift - Lunch   11:30:00    12:05:00
    3   1st Shift - 2nd break   13:30:00    13:45:00
    4   2nd Shift - 1st break   17:10:00    17:25:00
    5   2nd Shift - Lunch   19:30:00    20:05:00
    6   2nd Shift - 2nd break   21:30:00    21:45:00
    7   3rd Shift - 1st break   01:10:00    01:25:00
    8   3rd Shift - Lunch   03:30:00    04:05:00
    9   3rd Shift - 2nd break   05:30:00    05:45:00
    
  4. 我在想通过计算工作时间((Event_Stop_Date / Current_Time - Last_Event_Start_Time) - (班次时间+时间延迟时间))将帮助我在柜台上显示价值,以及当前时间是在班次和外面休息时间计数器将运行,否则将停止。

    我试图以不同的方式处理这个问题而没有运气。你可以帮我解决一下SQL函数,它可以在2个日期之间返回两个值Work_hours,并根据end_datetime / current_date_time是否在工作时间内标记。

    CREATE FUNCTION [dbo].[Fnt_GetWorkTime]
    (   
      @Start_Time DATETIME
      ,@End_Time DATETIME
    )
    RETURNS @TableReturn TABLE 
      (
        WorkTimeInSec INT,
        CurrentTimeWorkTime BIT
      )
      RETURN;
        END
    

    提前感谢您的帮助

0 个答案:

没有答案