Pular para o conteúdo

Fóruns SQL e PL/SQL Calculo entre horas centesimal Calculo entre horas centesimal

#94977
burga
Participante

    Dá pra fazer usando case também, com a função to_date e mais alguns cálculos:

    WITH TABELA AS (
    SELECT '23:00' HR_SAIDA,'15:00' HR_ENTRADA FROM DUAL
    UNION ALL
    SELECT '08:00','07:00' FROM DUAL
    UNION ALL
    SELECT '07:00','23:00' FROM DUAL
    UNION ALL
    SELECT '07:00','07:00' FROM DUAL)
    SELECT HR_SAIDA, HR_ENTRADA,
    CASE
    WHEN TO_DATE(HR_SAIDA,'HH24:MI') >= TO_DATE(HR_ENTRADA,'HH24:MI')
    THEN (TO_DATE(HR_SAIDA,'HH24:MI')-TO_DATE(HR_ENTRADA,'HH24:MI'))24
    ELSE
    (TRUNC(TO_DATE(HR_ENTRADA,'HH24:MI'),'MONTH')+1-TO_DATE(HR_ENTRADA,'HH24:MI')
    +(TO_DATE(HR_SAIDA,'HH24:MI')-TRUNC(TO_DATE(HR_ENTRADA,'HH24:MI'),'MONTH')))
    24
    END TOTAL
    FROM TABELA;

    HR_SAIDA HR_ENTRADA TOTAL
    --------|----------|----------------------
    23:00 15:00 8
    08:00 07:00 1
    07:00 23:00 8
    07:00 07:00 0