Saya akan menggunakan months_between , mungkin digabungkan dengan floor :
select floor(months_between(date '2012-10-10', date '2011-10-10') /12) from dual;
select floor(months_between(date '2012-10-9' , date '2011-10-10') /12) from dual;
floor memastikan Anda mendapatkan tahun-tahun yang dibulatkan. Jika Anda menginginkan bagian pecahan, Anda jelas tidak ingin menggunakan floor .