PL SQL退休功能

时间:2017-05-15 15:40:12

标签: plsql date-arithmetic

我需要这个功能的帮助。代码没有错误,但它保持返回相同的结果,即第二个条件/语句的值。

这就是它的工作方式: 如果雇员在雇用日期(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;

1 个答案:

答案 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;