SQL 整个服务器的 Datediff table

SQL Server Datediff for an entire table

我有一个名为 dbo.employees 的 table,我 运行 进行了一些查询,得到了以下结果。

empId | timeIn   | timeOut  | timeDiff
------+----------+----------+------------
1001  | 03:49:54 | 15:43:42 | 
1017  | 06:27:10 | 13:47:40 | 
1005  | 05:49:50 | 13:42:03 | 

我想 运行 一个额外的查询来计算 timeDiff,以便结果如下所示。 我在想 TIMEDIFF 函数可以做到这一点吗?如果可能的话,我想在 hours/minutes 中计算它。

empId | timeIn   | timeOut  | timeDiff
------+----------+----------+------------
1001  | 03:49:54 | 15:43:42 | 11hr, 53min
1017  | 06:27:10 | 13:47:40 | 8hr, 20min
1005  | 05:49:50 | 13:42:03 | 7hr, 52min

非常感谢您。

这是在横向连接和算术中使用 datediff() 的一个选项:

select e.*, concat(d.diff / 60, 'hr, ', d.diff % 60, 'min') timediff
from dbo.employee e
cross apply (values (datediff(minute, e.timein, e.timeout))) d(diff)

基本上,横向连接以分钟为单位计算两个时间之间的差异。然后,外部查询构建以小时和分钟表示该间隔的字符串。