如何在SQL Server 2012中获得非工作时间

时间:2016-08-30 11:59:36

标签: sql sql-server sql-server-2012

我有一个包含员工开始和结束时间的查找表,因此我需要构建一个报告,显示响应时间以及响应客户端所花费的时间。我有8h00的开始时间和17h00的结束时间,假设在这段时间之间有人可用但是如果查询在17h30进来,则意味着参加的人将在第二天的8:00获得。我想要获得一个响应时间,它应该排除没有人可用的时间,也应该排除周末。

以下是样本数据:

enter image description here

所以我的问题出现了,当支持成员需要超过2天的时间来回复查询时,假设它在星期五出现并且在周末没有,例如ID 33的那个在20:28时出现,那里没有人可用,也是22号,它出现在15:28,但没有人可以自由参加,所以第二天就参加了。

1 个答案:

答案 0 :(得分:0)

你可以用一个简单的案例来解决这个问题

假设班次和发布日志时间存储为日期时间

case
when datepart(HH, LogTime) < datepart(HH,StartTime) then convert(date, LogTime) + convert(time,StartTime)
when datepart(HH, Logtime) >= datepart(HH,EndTime) then convert(date, dateadd(dd,1,LogTime)) + convert(time,StartTime)
else LogTime
end as DateTimeStart

当然,这不会考虑周末等,但你可以很容易地添加它们。