Converter Segundos no formato HH:MM:SS e HH:MM:SS em Segundos utilizando o MSSQL Server

Post date: Dec 16, 2015 8:38:39 PM

Para realizar a conversão de Segundos para o formato HH:MM:SS pode ser utilizada essa Function:

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

Para realizar a conversão de HH:MM:SS para o formato em Segundos pode ser utilizada essa Function:

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: