Я думаю, у вас неправильные расчеты - первый должен быть 2,5 года? Если это так, то это, кажется, дает достойное приближение к тому, что вы хотите (снова в SQL-сервере)
create table YearDiff(ID int, fromDate datetime, toDate datetime)
go
insert into YearDiff values (1, '2005-01-01 00:00:00.000', '2007-06-30 00:00:00.000')
insert into YearDiff values (2, '2008-01-01 00:00:00.000', '2009-12-31 00:00:00.000')
select sum((datediff(ww, fromdate, todate)) / 52.0) from YearDiff