Thought I'd write it a bit different, what you have matches the calc that I use successfully.
CurrentDate and BirthDate need to be fields of type date when you check them in Manage | Database | Fields. ARe they? Sounds like one might be a text field.
CurrentDate-Birthdate will give you the "age" in elapsed days which will be a very large number. If Birthdate is of type text, the result will be the number of days from 12/31/0000 to today's date and that will also be a very large number.
Did you format your field as calculation
this is what I used and it works fine
Year ( Get ( CurrentDate ) ) - Year ( DOB ) - If ( Get ( CurrentDate ) < Date ( Month (DOB ) ; Day ( DOB ) ; Year ( Get ( CurrentDate ) ) ); 1 ; 0 )
It does need to be not only a field of type calculation, but an UNSTORED calculation or it will not update as time passes to show the correct age. Open the calculation and click the storage options button to bring up the dialog where you can make it an unstored calculation.
I use this expression myself:
Let ( [ T = Get ( CurrentDate ) ;
YT = Year ( T ) ] ;
YT - Year ( DOB ) - ( T < Date ( month ( DOB ) ; Day ( DOB ) ; YT ) ) )