Jeg ville bruge months_between , eventuelt kombineret med 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 sørger for, at du får nedrundede år. Hvis du vil have brøkdelene, vil du naturligvis ikke bruge floor .