CREATE FUNCTION [dbo].[ConverteSegundosEmHoras](@Segundos int)
RETURNS VARCHAR(10) AS
BEGIN
DECLARE @StrHora VARCHAR(50)
DECLARE @x int
SET @Segundos = ABS(@Segundos)
SET @x =(@Segundos / 3600)
IF LEN(@x) = 3
SELECT @StrHora = RIGHT('00' + CAST((@Segundos / 3600) AS VARCHAR),3), @StrHora = @StrHora + ':' + RIGHT('00' + CAST((@Segundos %3600)/60 AS VARCHAR), 2), @StrHora = @StrHora + ':' + RIGHT('00' + CAST((@Segundos %3600)%60 AS VARCHAR), 2)
ELSE IF Len(@x) > 3
SELECT @StrHora = RIGHT('00' + CAST((@Segundos / 3600) AS VARCHAR),4), @StrHora = @StrHora + ':' + RIGHT('00' + CAST((@Segundos %3600)/60 AS VARCHAR), 2), @StrHora = @StrHora + ':' + RIGHT('00' + CAST((@Segundos %3600)%60 AS VARCHAR), 2)
ELSE
SELECT @StrHora = RIGHT('00' + CAST((@Segundos / 3600) AS VARCHAR),2), @StrHora = @StrHora + ':' + RIGHT('00' + CAST((@Segundos %3600)/60 AS VARCHAR), 2), @StrHora = @StrHora + ':' + RIGHT('00' + CAST((@Segundos %3600)%60 AS VARCHAR), 2)
RETURN @StrHora
END
CREATE FUNCTION [dbo].[ConverteHorasEmSegundos] (@Horas VARCHAR(11))
RETURNS VARCHAR(11)
BEGIN
DECLARE @iHoras INTEGER
DECLARE @iMinutos INTEGER
DECLARE @iSegundos INTEGER
DECLARE @iAux INTEGER
DECLARE @iRetorno INTEGER
-- Verifica o formato HHH:MM:SS ou HH:MM:SS
IF (LEN(LTRIM(RTRIM(@Horas)))) > 8
BEGIN
SET @iHoras = SUBSTRING(@Horas,1,3)
SET @iMinutos = SUBSTRING(@Horas,5,2)
SET @iSegundos = SUBSTRING(@Horas,8,2)
END
ELSE
BEGIN
SET @iHoras = SUBSTRING(@Horas,1,2)
SET @iMinutos = SUBSTRING(@Horas,4,2)
SET @iSegundos = SUBSTRING(@Horas,7,2)
END
--Multiplica a hora por 60 minutos e soma-se mais os minutos restantes
SET @iAux = (@iHoras * 60) + @iMinutos
--Multiplica o minuto por 60 segundos e soma-se mais os segundos restantes
SET @iRetorno = (@iAux * 60) + @iSegundos
RETURN @iRetorno
END
Abaixo o exemplo do funcionamento das 2 Functions: