sql >> Base de Datos >  >> RDS >> Oracle

Cómo iterar sobre un rango de fechas en PL/SQL

Una solución que uso para esto es convertir el rango de fechas en un rango de números enteros que puede usar en un bucle for, luego volver a convertirlo en una fecha para hacer cosas con él. No puede hacer uniones ni nada de esta manera, pero es una solución mucho más pequeña que las que ya se publicaron:

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;