Najlepszym sposobem, jaki mogę sobie wyobrazić, jest przeanalizowanie przedziałów czasu na komponenty godzin, minut, sekund i milisekund, przekształcenie wszystkiego na milisekundy (przez dodanie i pomnożenie), następnie dodanie ich i użycie modulos i odejmowanie w celu jego zmiany z powrotem do przedziału czasowego.
Na przykład
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
A potem SELECT dbo.ParseMilliseconds(sum(dbo.GetMilliseconds(timespan))) as added_timespan
Nie testowałem tego wszystkiego, i nie może być prostsze sposoby, ale wiem, że to będzie działać.
W jakim celu? To nic nie znaczy. – dkretz
Nie sądzę, że to nic nie znaczy ... może są to czasy piosenek na albumie, a on chce cały czas trwania całego albumu? Tylko jedna możliwość ... – JosephStyons
Joseph jest tuż ... Chcę uzyskać czas trwania serii filmów "Summer of NHibernate", więc kiedy polecam tę serię innym, mogę powiedzieć im dokładnie, jak długo filmy będą trwać iść przez. –