计算年龄
问题描述:
可能重复:
How to calculate age in T-SQL with years, months, and days计算年龄
看起来简单的东西,但它似乎并没有为我工作。我想根据SQL中的两个日期来计算某个人的年龄。
我做了DATEDIFF(year,Birthdate,ReferenceDate),它并不总是给我适当的年龄。
例如
DATEDIFF(year,'1981-07-05',2011-07-01')
给出30,而它仍然应该是29.有没有办法做到这一点?
感谢,
答
尝试......
SELECT CASE WHEN
(DATEADD(year,DATEDIFF(year, @datestart ,@dateend) , @datestart) > @dateend)
THEN DATEDIFF(year, @datestart ,@dateend) -1
ELSE DATEDIFF(year, @datestart ,@dateend)
END
它只是比较了一年差异,如果是更大然后减去一年,否则返回值。
答
Declare @Date1 datetime Declare @Date2 datetime Select @Date1 = '07/25/1984' Select @Date2 = GetDate() select CASE WHEN dateadd(year, datediff (year, @Date1, @Date2), @Date1) > @Date2 THEN datediff (year, @Date1, @Date2) - 1 ELSE datediff (year, @Date1, @Date2)END as Age
+0
SELECT DATEDIFF(yy,BirthDate,GETDATE()) - CASE 当月(出生日期)> MONTH(GETDATE()) \t \t OR(MONTH (出生日期)= MONTH(GETDATE()) \t \t \t AND DAY(出生日期)> DAY(GETDATE()))THEN ELSE 0 END AS年龄; –
答
尝试这个
select
(datediff(yy,'1981-07-08',getdate()))-(datepart(yy,(convert(datetime,convert(int,dateadd(yy,datediff(yy,'1981-07-08',getdate()),'1981-07-08'))-convert(int,dateadd(yy,-1,getdate())))))-1900)
您的日期部分是'year',所以只考虑'1981'和'2011'。查看[documentation](http://msdn.microsoft.com/en-us/library/ms189794.aspx)。此外,havev看看这个问题http://*.com/questions/57599/how-to-calculate-age-in-t-sql-with-years-months-and-days – Jacob
有一篇文章,解释它不计算日期之间的年份,它计算年份之间的年数。 http://www.sqlteam.com/article/datediff-function-demystified –