Scusami, la seconda query che ti ho scritto è soggetta ad alcuni errori di arrotondamento.

esempio

codice:
select floor(datediff(curdate(),'2004-08-22')/365.25) as eta # 4 anzichè 5
La prima invece è corretta. Forse ci sono problemi dovuti alle parentesi

codice:
select (year(curdate()) - year('2004-08-22')) - (right(curdate(),5) < right('2004-08-22',5)) as eta # 5
comunque Piero come sempre ha già risolto.