Lo mejor que puedo pensar es analizar el tiempo en componentes de hora, minuto, segundo y milisegundos, convertirlo en milisegundos (agregando y multiplicando), luego sumarlos y usar módulos y restas para convertirlo de vuelta en un intervalo de tiempo.
Por ejemplo
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
Y luego SELECT dbo.ParseMilliseconds(sum(dbo.GetMilliseconds(timespan))) as added_timespan
No he probado todo esto, y puede haber formas más simples, pero sé que esto va a funcionar.
¿Para qué? No tiene sentido – dkretz
No creo que no tenga sentido ... tal vez estas son las duraciones de las canciones en un álbum, y quiere la duración total de todo el álbum? Solo una posibilidad ... – JosephStyons
Joseph está en lo cierto ... Quiero obtener la duración de la serie de videos "Summer of NHibernate" para que cuando recomiende esta serie a otros les diga exactamente cuánto tardarán los videos. atravesar. –