我正在制作一个电话报告但是我遇到了麻烦。我需要计算一个代理在电话上花费的时间,源数据是HH:MM:SS的呼叫持续时间。如同在1小时12分10秒内一样几秒钟。因此,如果2个代理人接听了2个电话,那么花费的时间就会计算在那一天。
是否可以将其更改为秒?或者任何人都可以提出更好的建议吗?
答案 0 :(得分: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
答案 1 :(得分:4)
如果列类型为datetime
,则:
(DATEPART(hh, @yourValue) * 60 * 60) + (DATEPART(mi, @yourValue) * 60) + DATEPART(s, @yourValue)
答案 2 :(得分:-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