Resources Up

declare @birthday datetime, @d datetime
select @birthday = '12/31/1972', @d = '1/1/99'
select datediff(yy, @birthday, @d) -
	(case when (datepart(m, @birthday) > datepart(m, @d)) or
			(datepart(m, @birthday) = datepart(m, @d) And
				datepart(d, @birthday) > datepart(d, @d))
			then 1
			else 0
	end) as Age1

-- Just for completion, another way to do the same.
-- I am not sure if this will work for all dates but
-- this is an easy approximate way.
select year ( dateadd( dd, datediff ( dd , @birthday , @d ) ,
		'1900-01-01 00:00' ) )	- 1900

-- A general question:
-- To find out if a year is leap year or not, use
if ( year ( @d ) % 400 = 0 ) Or
	( year( @d ) % 4 = 0 And year ( @d ) % 100 <> 0 )
	print 'Leap Year - 366 days'
else
	print 'Not a leap year - 365.25 days'
This page was last updated on May 01, 2006 04:28 PM.