2

我将这种 varchar 格式作为时间累积,我想将其转换为整数以进行 SUM 并获得一组的总时间。第一部分可能是 1、2、3、4 甚至五位数字,代表 Hours 的累积,然后用冒号分隔。然后是第二部分,即分钟的累积和秒的最后累积(每个 2 位)。如果可能,如何在一个查询中将其转换为整数。

4

2 回答 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 回答