Бих използвал months_between
, евентуално комбиниран с 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
гарантира, че ще получите закръглени години надолу. Ако искате дробните части, очевидно искате да не използвате floor
.