标准工作时间开始于08:00,结束于16:00,因此我为此声明了两个参数:
DECLARE @StartTime TIME = '08:00',
@EndTime TIME = '16:00'
所有时间计算都必须在开始和结束时间之间。
表1 工作时间
Id Date WorkStartTime WorkEndTime
-------------------------------------------------------
1 2019/04/20 08:30 14:20
2 2019/04/21 09:05 15:15
3 2019/04/22 08:37 14:22
4 2019/04/23 08:05 15:00
表格2的叶子
Id Date LeaveStartTime LeaveEndTime
--------------------------------------------------------
1 2019/04/20 08:00 09:00
2 2019/04/21 08:30 16:00
3 2019/04/22 07:00 08:45
4 2019/04/22 14:20 17:00
并且根据表1(工作时间)找出每天没有重叠的总请假时间(我的意思是计算请假时间(来自表2)-工作时间(表1))。
这是我需要的结果:
2019/04/20 30 min
2019/04/21 80 min -- (35' at first and 45' at end)
2019/04/22 98 min -- (calculate 14:22(workendtime bigger than lavestarttime) to 16:00 (for @EndTime))
我希望能够在SQL查询中实现此操作。我正在使用SQL Server 2016。