Encontrar a diferença em horas utilizando PL/SQL da Oracle
Veja aqui uma forma simples de encontrar a diferença em horas utilizando PL/SQL da Oracle.
[ad#texto]
Você já tentou encontrar a diferença em horas utilizando PL/SQL da Oracle? Uma tarefa aparentemente simples pode ser potencial desastrosa, principalmente se o resultado desta diferença for inferior ao período de uma hora, o resultado obtido fatalmente estará errado e caso você esteja utilizando este cálculo para tomada de decisão sobre a performance de uma aplicação PL/SQL você pode ser surpreendido ao finalizar o projeto.

Para encontrar a diferença em horas utilizando o PL/SQL da Oracle será preciso realizar uma série de conversões para termos certeza que o cálculo da diferença em segundos, minutos e horas está sendo realizado a contento.
Veja o exemplo abaixo, presumindo que a QUERY em questão demore para finalizar a sua execução teremos no final a real diferença de tempo, note que imprimi no console os tempos de início e fim para que você possa conferir os resultados:
DECLARE
vrTempo DATE := SYSDATE;
vrTempoF DATE;
vrCont PLS_INTEGER := 0;
vrDif VARCHAR2(400);
BEGIN
dbms_output.put_line('Inicial: ' || TO_CHAR(vrTempo, 'HH24:MI:SS'));
SELECT COUNT(1)
INTO vrCont
FROM sua_tabela
WHERE campo = 1;
dbms_output.put_line('Registros: ' || vrCont);
vrTempoF := SYSDATE;
dbms_output.put_line('Final: ' || TO_CHAR(vrTempoF, 'HH24:MI:SS'));
vrDif := LPAD(TRUNC(( (vrTempoF - vrTempo) * 86400 / 3600)), 2, '0') ||':' ||
LPAD(TRUNC(MOD( (vrTempoF - vrTempo) * 86400 , 3600 ) / 60 ), 2, '0') || ':'||
LPAD(TRUNC(MOD(MOD( (vrTempoF - vrTempo) * 86400, 3600 ), 60)), 2, '0');
dbms_output.put_line('Dif: ' || vrDif);
END;
Muito simples, na saída do console você verá a hora de início, término e a quantidade de tempo decorrido.