Inquiridor
Função que converte segundos em horas no formato HH:mm:ss

Discussão Geral
-
Boa tarde galera, nos ultimos dias estive procurando por uma função que convertesse segundos em horas, isso dentro do SQL, não achei e então tive que criar uma.
Segue o código abaixo...
CREATE FUNCTION [dbo].[ConverteSegundosEmHoras](@Segundos int)
RETURNS VARCHAR(10) AS
BEGIN
DECLARE @StrHora VARCHAR(50)
DECLARE @x INT
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
GO
Willian Barreto "O perfeito é desumano, porque o humano é imperfeito!" Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.
- Editado Willian Barreto terça-feira, 12 de março de 2013 19:37
- Tipo Alterado Felipo Gonçalves terça-feira, 12 de março de 2013 19:47
Todas as Respostas
-
-
Alexandre, na verdade não é dúvida.
É que eu estava atras de uma função em SQL que converta segundos em hora, como não achei nada na net, tive que criar.
Quis deixar aqui caso alguém preciso de algo do tipo no futuro!
Willian Barreto "O perfeito é desumano, porque o humano é imperfeito!" Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.
-
-
-
William,
Quando precisei descobrir alguma maneira de se trabalhar com horas no SQL, tive que improvisar e até escrevi um post sobre, espero que te ajude:
http://vitormendes.com.br/2012/09/16/agregando-horas-no-sql/Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
-
-
Se o SQL Server for anterior ao 2008, pode usar :
SELECT CONVERT(CHAR(8),DATEADD(second,121,0),108)
Se for igual ou superior ao SQL 2008:
SELECT CONVERT(time, DATEADD(ms, 121 * 1000, 0))
Att,
Antero Marques
_______________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques segunda-feira, 11 de julho de 2016 19:47
-