在SQL中计算一个人的年龄

Dav*_*lle 1 sql sql-server-2005 date

可能重复:
如何使用年,月和日计算T-SQL中的年龄

这似乎很简单,但它似乎对我不起作用.我想根据SQL中的两个日期计算某人的年龄.

我做了DATEDIFF(年,出生日期,参考日期)并且它并不总是给我正确的年龄.

例如

DATEDIFF(year,'1981-07-05',2011-07-01') 
Run Code Online (Sandbox Code Playgroud)

给30,虽然它应该仍然是29.有没有办法做到这一点?

谢谢,

tke*_*ood 7

试试这个...

SELECT CASE WHEN
 (DATEADD(year,DATEDIFF(year, @datestart  ,@dateend) , @datestart) > @dateend)
THEN DATEDIFF(year, @datestart  ,@dateend) -1
ELSE DATEDIFF(year, @datestart  ,@dateend)
END
Run Code Online (Sandbox Code Playgroud)

它只是比较年份差异,如果它更大,则减去一年,否则返回值.