Here is another way I calculate age.
SELECT @AGE = ' '+CAST(((datediff(ss, @DOB,GETDATE())) /31536000) AS NVARCHAR(MAX)) +
' Years, ' +
CAST((((datediff(ss, @DOB,GETDATE())) %31536000) /2628000) AS NVARCHAR(MAX)) +
' Months, ' +
CAST((((datediff(ss, @DOB,GETDATE())) %2628000) /86400) AS NVARCHAR(MAX)) +
' Days, ' +
CAST((((datediff(ss, @DOB,GETDATE())) %86400) /3600) AS NVARCHAR(MAX)) +
' Hours, ' +
CAST((((datediff(ss, @DOB,GETDATE())) %3600) /60) AS NVARCHAR(MAX)) +
' Minutes, ' +
CAST(((datediff(ss, @DOB,GETDATE())) %60) AS NVARCHAR(MAX)) +
' Seconds '