Ik zou months_between . gebruiken , eventueel gecombineerd met 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 zorgt ervoor dat je naar beneden afgeronde jaren krijgt. Als je de fractionele delen wilt, wil je natuurlijk geen floor gebruiken .