Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como iterar em um intervalo de datas em PL/SQL


Uma solução que eu uso para isso é converter o intervalo de datas em um intervalo inteiro que você pode usar em um loop for e, em seguida, converter de volta em uma data para fazer coisas com ele. Você não pode fazer nenhuma junção ou qualquer coisa dessa maneira, mas é uma solução muito menor que as já postadas:
declare
  start_date number;
  end_date number;
  business_date varchar2(8);
begin
  start_date := to_number(to_char(to_date('2013-04-25', 'yyyy-MM-dd'), 'j'));
  end_date := to_number(to_char(to_date('2013-05-31', 'yyyy-MM-dd'), 'j'));
  for cur_r in start_date..end_date loop
    business_date := to_char(to_date(cur_r, 'j'), 'yyyy-MM-dd');
    dbms_output.put_line(business_date);
  end loop;
end;