在SQL中计算一个人的年龄

时间:2011-07-07 13:09:11

标签: sql sql-server-2005 date

  

可能重复:
  How to calculate age in T-SQL with years, months, and days

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

我做过DATEDIFF(年,出生日期,参考日期)并且它并不总能给我正确的年龄。

例如

DATEDIFF(year,'1981-07-05',2011-07-01') 

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

谢谢,

3 个答案:

答案 0 :(得分:7)

试试这个......

SELECT CASE WHEN
 (DATEADD(year,DATEDIFF(year, @datestart  ,@dateend) , @datestart) > @dateend)
THEN DATEDIFF(year, @datestart  ,@dateend) -1
ELSE DATEDIFF(year, @datestart  ,@dateend)
END

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

试试这个

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)