segunda-feira, 11 de fevereiro de 2008

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

Nenhum comentário: