The MONTHS_BETWEEN function is shown here:
This function returns the number of months between two dates.
If this difference is not exact, you get a floating-point number where the decimal portion represents the fraction N/31 where N is the number of remaining days.
If SYSDATE were near the beginning of February, you would get results similar to those shown here:
SQL> SQL> declare-- from w w w .ja v a2 s.c o m 2 v_nr number; 3 begin 4 v_nr:=months_between(sysdate,trunc(sysdate,'Y')); 5 DBMS_OUTPUT.put_line(v_nr); 6 end; 7 / 3.65837402927120669056152927120669056153 PL/SQL procedure successfully completed. SQL>