Added get_date_tab to generate table of dates
This commit is contained in:
parent
d2e71075ef
commit
5254680126
@ -3,3 +3,9 @@
|
|||||||
select *
|
select *
|
||||||
from table(date_util_pkg.explode_month(2011, 2))
|
from table(date_util_pkg.explode_month(2011, 2))
|
||||||
|
|
||||||
|
-- generate a table of dates based on a "calendar string"
|
||||||
|
-- for calendar string syntax, see http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sched.htm#i1009923
|
||||||
|
-- a start and stop date can be specified, it not specified it defaults to a year from now
|
||||||
|
|
||||||
|
select t.column_value
|
||||||
|
from table(date_util_pkg.get_date_tab('FREQ=WEEKLY; BYDAY=MON,WED,FRI', trunc(sysdate), trunc(sysdate+90))) t
|
||||||
@ -1,4 +1,11 @@
|
|||||||
|
|
||||||
|
Version 1.7.1
|
||||||
|
=============
|
||||||
|
|
||||||
|
- Added sms_util_pkg
|
||||||
|
- Minor enhancements to date_util_pkg
|
||||||
|
- Minor enhancements to string_util_pkg
|
||||||
|
|
||||||
Version 1.7.0
|
Version 1.7.0
|
||||||
=============
|
=============
|
||||||
- Split installation script into various modules (core, xml, amazon, microsoft, etc.)
|
- Split installation script into various modules (core, xml, amazon, microsoft, etc.)
|
||||||
|
|||||||
@ -628,5 +628,51 @@ begin
|
|||||||
end explode_month;
|
end explode_month;
|
||||||
|
|
||||||
|
|
||||||
|
function get_date_tab (p_calendar_string in varchar2,
|
||||||
|
p_from_date in date := null,
|
||||||
|
p_to_date in date := null) return t_date_array pipelined
|
||||||
|
as
|
||||||
|
l_from_date date := coalesce(p_from_date, sysdate);
|
||||||
|
l_to_date date := coalesce(p_to_date, add_months(l_from_date,12));
|
||||||
|
l_date_after date;
|
||||||
|
l_next_date date;
|
||||||
|
begin
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Purpose: get table of dates based on specified calendar string
|
||||||
|
|
||||||
|
Remarks: see https://oraclesponge.wordpress.com/2010/08/18/generating-lists-of-dates-in-oracle-the-dbms_scheduler-way/
|
||||||
|
see http://www.kibeha.dk/2014/12/date-row-generator-with-dbmsscheduler.html
|
||||||
|
|
||||||
|
Who Date Description
|
||||||
|
------ ---------- --------------------------------
|
||||||
|
MBR 24.09.2015 Created
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
l_date_after := l_from_date - 1;
|
||||||
|
|
||||||
|
loop
|
||||||
|
|
||||||
|
dbms_scheduler.evaluate_calendar_string (
|
||||||
|
calendar_string => p_calendar_string,
|
||||||
|
start_date => l_from_date,
|
||||||
|
return_date_after => l_date_after,
|
||||||
|
next_run_date => l_next_date
|
||||||
|
);
|
||||||
|
|
||||||
|
exit when l_next_date > l_to_date;
|
||||||
|
|
||||||
|
pipe row (l_next_date);
|
||||||
|
|
||||||
|
l_date_after := l_next_date;
|
||||||
|
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
end get_date_tab;
|
||||||
|
|
||||||
end date_util_pkg;
|
end date_util_pkg;
|
||||||
/
|
/
|
||||||
|
|||||||
@ -103,5 +103,10 @@ as
|
|||||||
function explode_month (p_year in number,
|
function explode_month (p_year in number,
|
||||||
p_month in number) return t_period_date_tab pipelined;
|
p_month in number) return t_period_date_tab pipelined;
|
||||||
|
|
||||||
|
-- get table of dates based on specified calendar string
|
||||||
|
function get_date_tab (p_calendar_string in varchar2,
|
||||||
|
p_from_date in date := null,
|
||||||
|
p_to_date in date := null) return t_date_array pipelined;
|
||||||
|
|
||||||
end date_util_pkg;
|
end date_util_pkg;
|
||||||
/
|
/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user