"I am eight years old."
Translation:Yo tengo ocho años.
And cumpleaños translates as birthday. So I believe tufteboy¹ is saying the Spanish meaning is that, on reaching your third birthday, you have three years of your life completed.
I think also that your age is viewed something you possess, so it is something you have (achieved) rather than something you are, as is said in English.
Other examples using "to have … " expressing age:
• Mi bebé tiene tres meses. "My baby is three months old."
• Mi perrito tiene quince días. "My puppy is fifteen days old."
• Esta casa tiene tres siglos. "This house is three centuries old."