SQL Methods Function to add "Gold Medal" for anniversary
First, I assume that the fact that you're using join_date with an underscore in your code while the type uses joindate is a typo.  Otherwise, you'd get a compilation error.

You want to calculate the difference between join_date and the current date.  My guess is that you want to use months_between to calculate the number of months between the two dates and build your logic based on that.  months_between probably does what a human wants when he or she says "12 years" but date arithmetic gets tricky particularly when things like leap days are involved (if you joined on Feb 29, 2016, do you hit your 2 year mark on Feb 28, 2018?  Or March 1, 2018?).  If you need to account for time zones, that makes the logic more difficult.

IF months_between( sysdate, self.join_date ) &gt;= 12*12
THEN
  RETURN 'Gold';
ELSIF months_between( sysdate, self.join_date ) &gt;= 6*12
THEN
  RETURN 'Silver';
ELSIF months_between( sysdate, self.join_date ) &gt;= 2*12
THEN
  RETURN 'Bronze';
ELSE
  RETURN null;
END IF;