可能重复:
How to calculate age in T-SQL with years, months, and days
这似乎很简单,但它似乎对我不起作用。我想根据SQL中的两个日期来计算某人的年龄。
我做过DATEDIFF(年,出生日期,参考日期)并且它并不总能给我正确的年龄。
例如
DATEDIFF(year,'1981-07-05',2011-07-01')
给出30,虽然它应该仍然是29.有没有办法做到这一点?
谢谢,
答案 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)