我有一张轮班休息时间表
Begin end
12:00 12:30
17:30 18:30
现在,我想编写一个SQL来计算给定开始和结束时间的实际工作时间。例如,如果从9:00开始到15:00结束,则实际时间为6休息时间= 5.5小时,如果从9:00开始到20:00结束,则实际时间为10小时。如何编写一个程序在SQL Server中进行检查?谢谢。
答案 0 :(得分:0)
您可以使用DATEDIFF
select *, CONVERT(time(7),DATEADD(s, DATEDIFF(s,S,E),'00:00:00')) from QQ
http://sqlfiddle.com/#!18/01213d/1
您的案例列名称将为
select *, CONVERT(time(7),DATEADD(s, DATEDIFF(s,Begin,end),'00:00:00')) from yourtable
答案 1 :(得分:0)
这里没有可用的架构详细信息,这意味着以下SQL是通用的,必须对其进行更改以适合您的数据库。
SELECT
(datediff(minute, shiftStartTime, shiftEndTime)
- datediff(minute,breakStartTime,breakEndTime)) / 60.0
FROM yourTable
注意:
如果您可以提供更多架构详细信息,我们将能够编写出更完整的声明。