Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment itérer sur une plage de dates en PL/SQL

Une solution que j'utilise pour cela consiste à convertir la plage de dates en une plage d'entiers que vous pouvez utiliser dans une boucle for, puis à la reconvertir en une date pour en faire des choses. Vous ne pouvez pas faire de jointure ou quoi que ce soit de cette façon, mais c'est une solution beaucoup plus petite que celles déjà publiées :

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;