我能想到的最好方法是將時間跨度分解成小時,分鐘,秒和毫秒分量,將其全部轉換爲毫秒(通過加法和乘法),然後加上它們並使用模和減法來轉換它回到時間跨度。
例如
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
我沒有測試過這一切,並有可能成爲更簡單的方法,但我知道這會工作。
爲什麼?這沒有意義。 – dkretz 2009-05-29 16:00:19
我不認爲這是毫無意義的......也許這些是專輯中歌曲的持續時間,他想要整個專輯的總時長?只有一種可能性...... – JosephStyons 2009-05-29 16:17:29