我目前正在处理通话报告,但是遇到了障碍。我需要计算座席在电话上花费了多长时间,源数据在通话时间的 HH:MM:SS 中。就像 1 小时 12 分 10 秒和秒数一样。因此,如果 2 个座席接听了 2 个电话,则所花费的时间将计算为当天的总和。
是否可以将其更改为秒?或者任何人都可以提出更好的建议吗?
我目前正在处理通话报告,但是遇到了障碍。我需要计算座席在电话上花费了多长时间,源数据在通话时间的 HH:MM:SS 中。就像 1 小时 12 分 10 秒和秒数一样。因此,如果 2 个座席接听了 2 个电话,则所花费的时间将计算为当天的总和。
是否可以将其更改为秒?或者任何人都可以提出更好的建议吗?
时间到秒
假设它是时间数据类型,那么您可以像这样更改为秒
DATEDIFF(second, 0, @YourTimeValue)
这是一个简单的聚合示例(即总和)
DECLARE @data TABLE (TimeColumn TIME)
INSERT INTO @data values ('01:12:10'), ('02:15:45')
SELECT SUM(DATEDIFF(SECOND, 0, TimeColumn)) FROM @data
结果为 12475 秒
秒到时间
我猜想完成图片从秒转换回时间格式
SELECT CAST(DATEADD(SECOND, @TotalSecondsValue, 0) AS TIME)
或作为聚合示例的一部分
DECLARE @data TABLE (TimeColumn TIME)
INSERT INTO @data VALUES ('01:12:10'), ('02:15:45')
SELECT CAST(DATEADD(SECOND, SUM(DATEDIFF(SECOND, 0, TimeColumn)), 0) AS TIME) FROM @data
结果是 03:27:55
如果列类型为datetime
:
(DATEPART(hh, @yourValue) * 60 * 60) + (DATEPART(mi, @yourValue) * 60) + DATEPART(s, @yourValue)
两种方法...
这首先是简洁的,并且在不涉及小数秒的情况下可以正常工作(这将被 DATEDIFF 截断与舍入):
select DATEDIFF(second, 0, '00:12:10')
第二种方法提取时间的各个组成部分(包括小数毫秒):
select
DATEPART(hh, '00:12:10.750')*60*60) +
DATEPART(mi, '00:12:10.750')*60 +
DATEPART(s, '00:12:10.750') +
DATEPART(millisecond, '00:12:10.750')/1000.0
如果您的时间精度比毫秒更精细,您也可以使用纳秒分辨率:
select
DATEPART(hh, '00:12:10.750')*60*60) +
DATEPART(mi, '00:12:10.750')*60 +
DATEPART(s, '00:12:10.750') +
DATEPART(nanosecond, '00:12:10.750')/1000000000.0