我正在使用以下函数,它需要三个参数日期、要添加的年份和要添加的月份,并返回最终日期。
create or replace function date_add_year_month(p_date in date, p_years in number, p_months in number)
return date
as
v_years number;
v_date date;
begin
v_date := add_months(p_date, p_months);
v_years := p_years + extract(year from v_date);
return to_date(v_years || (extract(month from v_date)) || (extract (day from v_date)), 'YYYYMMDD');
end;
/
现在,如果我运行以下测试数据,我会收到无效月份的错误。
select date_add_year_month(date '2009-10-28', 0, 10) from dual;
select date_add_year_month(date '2009-10-28', 0, 11) from dual;
select date_add_year_month('2009-Jan-01', 5, 0) from dual;
select date_add_year_month(date '2009-Oct-28', -1, -5) from dual;
但是一旦我开始在函数中输入月份值 12 或以上,它就会开始给我一个输出。
select date_add_year_month(date '2009-10-28', 0, 12) from dual;
select date_add_year_month(date '2009-10-28', 0, 13) from dual;
select date_add_year_month(date '2009-Oct-28', 1, 26) from dual;
select date_add_year_month(date '2009-10-28', 0, 36) from dual;
select date_add_year_month(date '2009-10-28', -1, 26) from dual;