lunes, 25 de junio de 2012

Script - Generación de fechas mediante función PIPELINED

Función para la generación dinámica de fechas/horas con parámetros: fecha_inicio, fecha_fin, intervalo (en minutos):

CREATE OR REPLACE TYPE "SYSTEM"."DATE_LIST" is table of date;

CREATE OR REPLACE FUNCTION "SYSTEM"."PIPE_DATE_INTERVAL" (p_start date,p_end date, p_inc number)
return date_list pipelined is
v_intervalos number;
begin
v_intervalos:=(p_end-p_start)*24*60/p_inc;
for i in 0 ..v_intervalos-1 loop
pipe row (p_start +p_inc*i/(24*60));
end loop;
return;
end;


-- Ejemplo:

select column_value from table(system.pipe_date_interval(trunc(sysdate), sysdate,30));

Generaría una lista como la siguiente:

COLUMN_VALUE
-------------------
25/06/2012 00:00:00
25/06/2012 00:30:00
25/06/2012 01:00:00
25/06/2012 01:30:00
25/06/2012 02:00:00
25/06/2012 02:30:00
25/06/2012 03:00:00
25/06/2012 03:30:00
25/06/2012 04:00:00
25/06/2012 04:30:00
25/06/2012 05:00:00
25/06/2012 05:30:00
25/06/2012 06:00:00
25/06/2012 06:30:00
25/06/2012 07:00:00
25/06/2012 07:30:00

No hay comentarios:

Publicar un comentario