Pular para o conteúdo

Fóruns SQL e PL/SQL conversao de numero para horas conversao de numero para horas

#88449
Rodrigo Mesquita
Participante

    Trabalhar com horas sempre é trabalhoso…No dia que o oracle tratar a soma das oracle nosso trabalhar vai ser bem facilitado, mais por enquanto vamos as “alternativas” hehe

    olha essa funcao aqui, acho q te ajuda

    Function Soma_Horas(Phora1 In Number, Phora2 In Number)
    Return Varchar2 Is
    Vhora1 Varchar2(4) := Lpad(Phora1, 4, 0);
    Vhora2 Varchar2(4) := Lpad(Phora2, 4, 0);
    Vsegundos Number;
    Vhora Varchar2(10);
    Begin
    — Transforma tudo em minutos
    Vsegundos := ((Substr(Vhora1, 1, 2) * 60) + Substr(Phora1, 2, 2) +
    (Substr(Vhora2, 1, 2) * 60) + Substr(Phora1, 2, 2)) * 60;
    Vhora := To_Char(Trunc(Vsegundos / 60 / 60), ’09’);
    If Round(Vhora) > 24 Then
    Vhora := Vhora – 25 || To_Char(Trunc(Mod(Vsegundos, 3600) / 60), ’09’) ||
    To_Char(Mod(Mod(Vsegundos, 3600), 60), ’09’);
    Else
    Vhora := To_Char(Trunc(Vsegundos / 60 / 60), ’09’) ||
    To_Char(Trunc(Mod(Vsegundos, 3600) / 60), ’09’) ||
    To_Char(Mod(Mod(Vsegundos, 3600), 60), ’09’);
    End If;
    Return Vhora;
    End;