時間の累積としてこの varchar 形式があり、それを整数に変換して SUM を実行し、グループの合計時間を取得したいと考えています。1 桁、2 桁、3 桁、4 桁、または 5 桁の最初の部分は、時間の累積を表し、コロンで区切られます。次に、分の累積である 2 番目の部分と、最後の秒の累積 (それぞれ 2 桁) が続きます。可能であれば、1 つのクエリでこれを整数に変換する方法。
質問する
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
アイデアは、パーツを左、右、中央に切り取り、1 時間の秒数と 1 分の秒数を掛けて、3 つのコンポーネントを足し合わせるというものです。
ここに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 に答える