Here's so it works on leap years ( i.e. current_date = date'2012-02-29' )
SELECT (EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM brth_dt) (NAMED YEARS)) + CASE WHEN add_months( CURRENT_DATE , - YEARS * 12 ) < brth_dt THEN -1 ELSE 0 END AS age_whole_yrs
Here's so it works on leap years ( i.e. current_date = date'2012-02-29' )
SELECT (EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM brth_dt) (NAMED YEARS))
+ CASE WHEN add_months( CURRENT_DATE , - YEARS * 12 ) < brth_dt
THEN -1 ELSE 0 END AS age_whole_yrs