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.

Encontrar a diferença em horas utilizando PL/SQL da Oracle
Encontrar a diferença em horas utilizando PL/SQL da Oracle

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.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.