ok What about the following?
DECLARE @BirthDate datetime
DECLARE @CurrentDate datetime
DECLARE @Age int
SET @BirthDate = '2008-03-13 10:10:00' /* OR Whatever date you want */
SET @CurrentDate = GETDATE() /* OR Whatever date you want */
--This gives accuracy up to a Day
SET @Age = DATEDIFF(dd,@BirthDate,@CurrentDate)/365
--This gives accuracy up to an Hour
SET @Age = DATEDIFF(hh,@BirthDate,@CurrentDate)/8760
--This gives accuracy up to a Minute
SET @Age = DATEDIFF(mi,@BirthDate,@CurrentDate)/525600
--This gives accuracy up to a Second
SET @Age = DATEDIFF(ss,@BirthDate,@CurrentDate)/31536000
Interesting trivia, but ultimately not very useful.
There are (according to Google) 365.242199 days in a year, not 365 nor even 365.25 as many have suggested. (That's why every 100th year is NOT a leap year even though 100 is evenly divisible by 4, unless it is also every 400th year.) Based on that number, there would be approximately 8765.81277 hours in a year (525948.766 minutes, or 31556926 seconds, ...)
Still, others have already posted about issues with calculating age by dividing the number of days between to dates and dividing between whatever number you choose to use for the number of days in a year. For most dates it might work, but the boundaries will get you.
As for the hours, minutes, seconds, etc., those calculations are pointless. Aside from the fact that by the time you calculate your age to the nearest second your answer is already incorrect 😉 , your answer will be off unless you somehow factor in the time zones for the events, changes due to DST (not just within a year, but year to year when some government decides to change the rules as we recently did in the US), etc. One way would be to store all your dates in UTC, but then how many DOB fields have you seen that include a complete timestamp down to the seconds? I'm sure there might be some in the medical field, but beyond that I doubt you'll find many.