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:
13: target_date := trunc(add_months(sysdate,-months_ago)-(7*weeks_ago));
14: day_number := to_char(target_date,'DD');
15:
16: if day_number > 16 then
17: target_date := target_date - (day_number - 16);
18: else
19: target_date := target_date - (day_number - 1);
20: end if;
21: return target_date;
22: end get_reporting_period_start;
23:
24: function get_reporting_period_end
25: return date is
26: months_ago number;
27: weeks_ago number;
28: target_date date;
29: day_number number;
30: begin
31: months_ago := rhn_date_manip.periods_ago/2;
32: weeks_ago := mod(rhn_date_manip.periods_ago,2);
33:
34: target_date := trunc(add_months(sysdate,-months_ago)-(7*weeks_ago));
35: day_number := to_char(target_date,'DD');
36:
37: if day_number > 16 then
38: target_date := last_day(target_date);
39: else
40: target_date := target_date + (-day_number + 15) + (1-1/86400);
41: end if;
42: return target_date;
43: end get_reporting_period_end;
44: end rhn_date_manip;