4

我目前正在处理通话报告,但是遇到了障碍。我需要计算座席在电话上花费了多长时间,源数据在通话时间的 HH:MM:SS 中。就像 1 小时 12 分 10 秒和秒数一样。因此,如果 2 个座席接听了 2 个电话,则所花费的时间将计算为当天的总和。

是否可以将其更改为秒?或者任何人都可以提出更好的建议吗?

4

3 回答 3

8

时间到秒

假设它是时间数据类型,那么您可以像这样更改为秒

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

于 2013-05-08T11:48:08.243 回答
3

如果列类型为datetime

(DATEPART(hh, @yourValue) * 60 * 60) + (DATEPART(mi, @yourValue) * 60) + DATEPART(s, @yourValue)

日期部分参考

于 2013-05-08T11:37:12.187 回答
-1

两种方法...

这首先是简洁的,并且在不涉及小数秒的情况下可以正常工作(这将被 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
于 2020-07-11T16:37:49.383 回答