I am using SQL 2000. Our product is a Student Information System, and so it is incredibly important that we specify the correct age for each kid...this is the formula I am using in a SP, but it won't display the correct age for any person if their birthday is later in the year than the current date...
age = CASE
WHEN (DATEPART(MONTH,ut_person.dateofbirth) = DATEPART(MONTH,GETDATE())) AND
(DATEPART(DAY,ut_person.dateofbirth) < DATEPART(DAY,GETDATE())) AND
(DATEDIFF(DAY,ut_person.dateofbirth,GETDATE()) < 8395)
THEN
CONVERT(varchar(3),DATEDIFF(YEAR,ut_person.dateofbirth,GETDATE()) - 1)
WHEN (DATEDIFF(DAY,ut_person.dateofbirth,GETDATE()) < 8395)
THEN
CONVERT(varchar(3),DATEDIFF(YEAR,ut_person.dateofbirth,GETDATE()))
WHEN (DATEDIFF(day,ut_person.dateofbirth,GETDATE()) > 8395)
THEN
'Over 22'
ELSE NULL
END
age = CASE
WHEN (DATEPART(MONTH,ut_person.dateofbirth) = DATEPART(MONTH,GETDATE())) AND
(DATEPART(DAY,ut_person.dateofbirth) < DATEPART(DAY,GETDATE())) AND
(DATEDIFF(DAY,ut_person.dateofbirth,GETDATE()) < 8395)
THEN
CONVERT(varchar(3),DATEDIFF(YEAR,ut_person.dateofbirth,GETDATE()) - 1)
WHEN (DATEDIFF(DAY,ut_person.dateofbirth,GETDATE()) < 8395)
THEN
CONVERT(varchar(3),DATEDIFF(YEAR,ut_person.dateofbirth,GETDATE()))
WHEN (DATEDIFF(day,ut_person.dateofbirth,GETDATE()) > 8395)
THEN
'Over 22'
ELSE NULL
END