Pular para o conteúdo

Cálculo de tempo com Oracle PL/SQL

Olá

Vou postar um exemplo de código em PL/SQL para somar e subtrair segundos, minutos e horas de um campo date.
Espero que seja útil.

declare
horas_dia integer := 24;
minutos_hora integer := 60;
segundos_minuto integer := 60;

total_horas_dia integer;
total_minutos_dia integer;
total_segundos_dia integer;
atual date;
begin

total_horas_dia := horas_dia;
total_minutos_dia := minutos_hora * horas_dia;
total_segundos_dia := segundos_minuto * minutos_hora * horas_dia;

atual := sysdate;


dbms_output.put_line(‘Data atual…: ‘ || to_char(atual, ‘dd/mon/yyyy hh24:mi:ss’));

— Somando 15 horas a data corrente
dbms_output.put_line(‘+ 15 horas…: ‘ || to_char(atual + (15 / total_horas_dia), ‘dd/mon/yyyy hh24:mi:ss’));

— Subtraindo 15 horas a data corrente
dbms_output.put_line(‘- 15 horas…: ‘ || to_char(atual – (15 / total_horas_dia), ‘dd/mon/yyyy hh24:mi:ss’));


— Somando 15 minutos a data corrente
dbms_output.put_line(‘+ 30 minutos.: ‘ || to_char(atual + (15 / total_minutos_dia), ‘dd/mon/yyyy hh24:mi:ss’));

— Subtraindo 15 minutos a data corrente
dbms_output.put_line(‘- 30 minutos.: ‘ || to_char(atual – (15 / total_minutos_dia), ‘dd/mon/yyyy hh24:mi:ss’));


— Somando 20 segundos a data corrente
dbms_output.put_line(‘+ 20 segundos: ‘ || to_char(atual + (20 / total_segundos_dia), ‘dd/mon/yyyy hh24:mi:ss’));

— Subtraindo 20 segundos a data corrente
dbms_output.put_line(‘- 20 segundos: ‘ || to_char(atual – (20 / total_segundos_dia), ‘dd/mon/yyyy hh24:mi:ss’));

A saída será parecida com essa:

Data atual…: 11/feb/2008 11:23:00
+ 15 horas…: 12/feb/2008 02:23:00
– 15 horas…: 10/feb/2008 20:23:00
+ 30 minutos.: 11/feb/2008 11:38:00
– 30 minutos.: 11/feb/2008 11:08:00
+ 20 segundos: 11/feb/2008 11:23:20
– 20 segundos: 11/feb/2008 11:22:40

Até mais

3 comentários em “Cálculo de tempo com Oracle PL/SQL”

  1. Pingback: Cálculo da diferença entre datas em Java » Roberto Furutani

  2. Boas…
    Mt bom mas será que não me pode dar umas ideias de como fazer uma função que devolva o numero de horas decorridas entre duas datas (por exemplo : ‘dd-mm-yyyy hh24-mm-ss – ‘ ‘dd-mm-yyyy hh24-mm-ss’)?

    cumprimentos

    Tiago Pereira

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *