Pular para o conteúdo

Fóruns SQL e PL/SQL Problema com comando ROUND Problema com comando ROUND

#97870
Ishii
Participante

    Olá,

    Lembrando que se o seu campo já for tipo Date pode-se apenas usar a conversão e depois o cálculo. Por exemplo:

    select last_day(sysdate) - sysdate dias,
    to_number(to_char(sysdate, 'HH24')) - to_number(to_char(last_day(trunc(sysdate)), 'HH24')) horas,
    to_number(to_char(sysdate, 'MI')) - to_number(to_char(last_day(trunc(sysdate)), 'MI')) minutos,
    to_number(to_char(sysdate, 'SS')) - to_number(to_char(last_day(trunc(sysdate)), 'SS')) segundos
    from dual;

    Isso retorna algo assim:


    DIAS HORAS MINUTOS SEGUNDOS
    11 13 13 48

    Se os campos bpmcrp1.XDEHRET e tbpmpro1.XDEHREC forem do tipo Date o SQL deve ficar assim:

    select
    tbpmpro1.NCODRIN as Contrato,
    tbpmpro1.NNUMPRO as Processo,
    tbpmpro1.XDEHREC as Recepcao,
    tbpmcrp1.XDEHRET as Retirada,
    tbpmcrp1.XDEHRET- tbpmpro1.XDEHREC ||' Dias ' ||
    to_number(to_char(tbpmcrp1.XDEHRET, 'HH24') - to_number (to_char(tbpmpro1.XDEHREC, 'HH24')))||' Horas ' ||
    to_number(to_char(tbpmcrp1.XDEHRET, 'MI') - to_number (to_char(tbpmpro1.XDEHREC, 'MI'))) ||' Minutos '
    as Diferenca
    from
    oraims.tbpmpro1 left join oraims.tbpmcrp1 on
    tbpmpro1.XDATPRO = tbpmcrp1.XDATPRO and
    tbpmpro1.NNUMPRO = tbpmcrp1.NNUMPRO
    where
    to_char (tbpmpro1.XDATPRO, 'dd/mm/yyyy') = '14/01/2011'
    and tbpmpro1.NNUMPRO = 360

    Se não forem coloque a conversão to_date primeiro para eles.

    []s Ishii