我将这种 varchar 格式作为时间累积,我想将其转换为整数以进行 SUM 并获得一组的总时间。第一部分可能是 1、2、3、4 甚至五位数字,代表 Hours 的累积,然后用冒号分隔。然后是第二部分,即分钟的累积和秒的最后累积(每个 2 位)。如果可能,如何在一个查询中将其转换为整数。
问问题
360 次
2 回答
3
您可以使用此查询以秒为单位检索跨度的长度:
select sum(
60*60*cast(left(span, len(span)-6) as int)
+ 60*cast(substring(span, len(span)-4, 2) as int)
+ cast(right(span, 2) as int))
from test
这个想法是把左边、右边和中间的部分切开,乘以一小时的秒数和一分钟的秒数,然后将三个分量相加。
这是sqlfiddle的链接。
于 2012-10-01T21:48:24.093 回答
0
-- sample data for discussion
declare @T table (exceltime varchar(10));
insert @T select
'123:44:50' union all select
'3:44:50' union all select
'0:00:01' union all select
'1123:11:50';
-- This query breaks up your time into components
select
stuff(exceltime,len(exceltime)-5,100,'') hr,
left(right(exceltime,5),2) min,
right(exceltime,2) second
from @T
-- and this one just adds them up
select
60*60*stuff(exceltime,len(exceltime)-5,100,'') +
60*left(right(exceltime,5),2) +
right(exceltime,2) totalsecond
from @T
totalsecond -- result
===============
445490
13490
1
4043510
于 2012-10-02T00:21:18.307 回答