RHN_DATE_MANIP
DDL scriptPackage source
Legend: string keyword reserved word operator
1: package rhn_date_manip
2: is
3: periods_ago number;
4: function get_reporting_period_start return date;
5: function get_reporting_period_end return date;
6: end rhn_date_manip;
Package body source
Legend: string keyword reserved word operator
1: package body rhn_date_manip
2: is
3: function get_reporting_period_start
4: return date is
5: months_ago number;
6: weeks_ago number;
7: target_date date;
8: day_number number;
9: begin
10: months_ago := rhn_date_manip.periods_ago/2;
11: weeks_ago := mod(rhn_date_manip.periods_ago,2);
12: target_date := trunc(add_months(sysdate,-months_ago)-(7*weeks_ago));
13: day_number := to_char(target_date,'DD');
14: if day_number > 16 then
15: target_date := target_date - (day_number - 16);
16: else
17: target_date := target_date - (day_number - 1);
18: end if;
19: return target_date;
20: end get_reporting_period_start;
21: function get_reporting_period_end
22: return date is
23: months_ago number;
24: weeks_ago number;
25: target_date date;
26: day_number number;
27: begin
28: months_ago := rhn_date_manip.periods_ago/2;
29: weeks_ago := mod(rhn_date_manip.periods_ago,2);
30: target_date := trunc(add_months(sysdate,-months_ago)-(7*weeks_ago));
31: day_number := to_char(target_date,'DD');
32: if day_number > 16 then
33: target_date := last_day(target_date);
34: else
35: target_date := target_date + (-day_number + 15) + (1-1/86400);
36: end if;
37: return target_date;
38: end get_reporting_period_end;
39: end rhn_date_manip;