none
Função que converte segundos em horas no formato HH:mm:ss RRS feed

  • 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.


    terça-feira, 12 de março de 2013 19:05

Todas as Respostas

  • Willian, qual seria a duvida ?

    Alexandre Matayosi Conde Mauricio.

    terça-feira, 12 de março de 2013 19:20
  • 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.

    terça-feira, 12 de março de 2013 19:26
  • Ok, show de bola, como voce só colocou o codigo e não tinha falado nada acreditei que teria algum erro/duvida.

    Alexandre Matayosi Conde Mauricio.

    terça-feira, 12 de março de 2013 19:32
  • Desculpe minha falta de atenção, nm reparei nisso.

    Vou editar agora mesmo.


    Willian Barreto "O perfeito é desumano, porque o humano é imperfeito!" Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    terça-feira, 12 de março de 2013 19:33
  • 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/

    terça-feira, 12 de março de 2013 19:41
  • Parabéns Willian! Excelente contribuição para a galera de SQL!

    Esse seu site também está muito bom Vitor!

    Estou gostando de ver! ;)

    Abraços!

    Felipo Gonçalves
    Microsoft Contingent Staff

    terça-feira, 12 de março de 2013 19:49
  • Ótima função.

    segunda-feira, 11 de julho de 2016 16:46
  • 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.



    segunda-feira, 11 de julho de 2016 19:47
  • Vlw, excelente
    domingo, 9 de outubro de 2016 22:57