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

Share


3 comentários

  1. #
    Cálculo da diferença entre datas em Java » Roberto Furutani
    fevereiro 10th, 2009 at 13:08

    […] Olá! Abaixo um exemplo de como fazer cálculo de subtração entre datas com Java. Há um tempo atrás eu postei como fazer o cálculo de tempo com Oracle PL/SQL. […]

    Responda a esse comentário
  2. #
    Coxita
    dezembro 15th, 2010 at 8:28

    Mto bom Jundi!! 🙂 Inté +!!

    Responda a esse comentário
  3. #
    Tiago Pereira
    dezembro 21st, 2011 at 13:33

    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

    Responda a esse comentário

Deixe um comentário