我正在处理一份电话报告,但遇到了问题。我需要计算代理花费在电话上的时间,源数据以HH:MM:SS形式给出,例如1小时12分10秒,而不是以秒为单位。因此,如果两个代理人接听了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
DATEDIFF(millisecond, 0, @YourTimeValue)
。 - Chris Moutraydatetime
,则:(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