時間、分、秒、ミリ秒のコンポーネントに時間を解析し、すべてをミリ秒単位で(加算して掛け算して)変換し、それを加算してモジュロと減算を使ってタイムスパンに戻ります。
例えば
create function dbo.GetMilliseconds (@timespan varchar (16))
returns int
as
begin
declare @ms int
declare @seconds int
declare @min int
declare @hour int
set @ms = cast(substring(@timespan, 10, 7) as int)
set @seconds = cast(substring(@timespan, 7, 2) as int)
set @min = cast(substring(@timespan, 4,2) as int)
set @hour = cast(substring(@timespan, 1, 2) as int)
return @ms + (@seconds * 1000) + (@min * 60000) + (@hour * 3600000)
end
go
create function dbo.ParseMilliseconds (@timespan int)
returns varchar (16)
as
begin
declare @hour int
declare @min int
declare @seconds int
declare @ms int
declare @leftover int
set @hour = @timespan/3600000 /* this will round down */
set @leftover = @timespan % 3600000
set @min = @leftover/60000
set @leftover = @leftover % 60000
set @seconds = @leftover/1000
set @ms = @leftover % 1000
return 'You''ll have to the string conversion yourself'
end
go
そしてSELECT dbo.ParseMilliseconds(sum(dbo.GetMilliseconds(timespan))) as added_timespan
私はこのすべてをテストしていない、と単純な方法があるかもしれませんが、私は、これは動作します知っています。
あなたが引くことによって正規化する必要があります時刻表
FROM
SELECT SUM(DATEDIFF(MINUTE、 '0時00分00秒'、TimeCol))のいくつかのバリエーションが動作します
どのような目的のためにですか?それは無意味です。 – dkretz
私はそれが意味がないとは思わない...おそらく、これらはアルバムの曲の長さであり、彼はアルバム全体の合計時間を望んでいるだろうか?ちょうど1つの可能性... – JosephStyons
ジョセフは正しいです...私は "NHibernateの夏"のビデオシリーズの期間を取得したいので、私は他の人にこのシリーズを勧めます。通過する。 –