[firebase-br] RES: RES: Converter segundos em HH:MM:SS

Zottis bzottis em ig.com.br
Seg Ago 9 18:08:07 -03 2010


Criei essa Procedure, 
Tenta aí


Se não der certo, serve de base para o que você precisa.

SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_SEGSTOHMS (
    secs bigint)
returns (
    hr varchar(10),
    hora varchar(10),
    minutos varchar(2),
    segundos varchar(2))
as
declare variable hrs integer;
declare variable minut integer;
declare variable secs_aux integer;
declare variable aux numeric(15,2);
declare variable hr_str varchar(2);
declare variable min_str varchar(2);
declare variable seg_str varchar(2);
begin

      if (secs > 0) then
         begin
          hora    = '00';
          min_str = '00';
          seg_str = '00';

          Hrs =  cast(secs / 3600 as integer);
            if (hrs < 10) then
              begin
                hr_str = '0' || HRS;
              end else
            if (hrs >= 10) then
              begin
                hr_str = HRS;
              end

          secs  = secs -(hrs * 3600);

                if (SECS = 0) then
                  bEGIN
                    min_str = '00';
                    seg_str = '00';
                  END ELSE
                if (SECS < 10) then
                  bEGIN
                    min_str = '0' || secs;
                    seg_str = '00';
                  END ELSE
                if ((SECS > 10)AND (SECS <= 60)) then
                  bEGIN
                    min_str = secs;
                    seg_str = '00';
                  END ELSE
              if (SECS > 60) then
                begin
                  minut =  CAST(secs / 60 AS INTEGER);
                  secs  = secs -(minut * 60);
                    if (SECS < 10) then
                      bEGIN
                       seg_str = '0' || SECS;
                      END ELSE
                    if (SECS > 10) then
                      bEGIN
                       seg_str = SECS;
                      END

                END


          HORA = hr_str || ':' || min_str || ':' || seg_str;
         end else
         HORA = '00:00:00';
         hr   = hrs;
         minutos = minut;
         segundos = SECS;


/*{    Converter Hora HH:MM:SS em Hora Decimal

    - Dividir os segundos por 60 e somar ao minutos
    - Dividir o resultado acima por 60 e adicionar às horas
    ex: 13:35:42
    - 42/60 = 0.7 -> 35.7
    - 35.7/60 = 0.595 -> 13.595 que é a hora decimal

    Converter a Hora Decimal em HH:MM:SS
    - Multiplicar a parte fraccional por 60 -> a parte inteira são os
minutos
    - Multiplicar a parte fraccional do resultado anterior por 60 -> a parte
inteira são os segundos
    Ex: 13.595
    - 0.595*60 = 35.7 -> 35 minutos
    - 0.7* 60 = 42 -> 42 segundos
    resultado = 13:35:42 }
*/

  suspend;
end^

SET TERM ; ^





Mais detalhes sobre a lista de discussão lista