我需要这个功能的帮助。代码没有错误,但它保持返回相同的结果,即第二个条件/语句的值。
这就是它的工作方式: 如果雇员在雇用日期(DOFA)的年龄小于或等于25,则退休日期为雇用日期后的35年。否则退休日期是员工年龄为60岁的时间
create or replace function EDOR_FUNCTION
(DOFA in date, DOB in date)
return date
is
new_edor_date date;
begin
if
DOFA - DOB <= 25 then new_edor_date := add_months(DOFA, 35*12);
else
new_edor_date := add_months(DOB, 60*12);
end if;
return new_edor_date;
end;
答案 0 :(得分:1)
您的条件从另一个日期中减去一个日期。这给出了两者之间天数的数量,而不是年数。
months_between()
给出两个日期之间的月数。乘以十二来得到年数
if months_between(DOFA , DOB) <= (25*12) then
new_edor_date := add_months(DOFA, 35*12);
else
new_edor_date := add_months(DOB, 60*12);
end if;