Il modo migliore che riesco a pensare è quello di analizzare l'intervallo di tempo in componenti di ore, minuti, secondi e millisecondi, convertirlo in millisecondi (aggiungendo e moltiplicando), quindi aggiungendoli e utilizzando i moduli e la sottrazione per trasformarlo di nuovo in un intervallo di tempo.
Per esempio
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
E poi SELECT dbo.ParseMilliseconds(sum(dbo.GetMilliseconds(timespan))) as added_timespan
non ho provato tutto questo, e ci possono essere modi più semplici, ma so che questo funzionerà.
fonte
2009-05-29 16:20:46
Per quale scopo? Non ha senso – dkretz
Non penso che sia privo di significato ... forse questi sono i tempi delle canzoni di un album, e lui vuole la durata totale dell'intero album? Una sola possibilità ... – JosephStyons
Joseph ha ragione su ... Voglio ottenere la durata della serie di video "Summer of NHibernate" in modo che quando raccomando questa serie ad altri, posso dire loro esattamente per quanto tempo i video porteranno Vai oltre. –