用Datediff计算用户的年龄(?)

时间:2015-07-23 13:39:55

标签: sql-server datediff calculated-field

我正在尝试使用Datediff函数给我一些用户的年限,但这比我想象的要复杂。

SELECT DATEDIFF( DD,'1963-07-22','2016-07-23')

这将给我 19360 天我认为这是因为2016年有一个闰年,这很好。

我想做的是获取而不是日期。

如果我将间隔从DD更改为YY(YYYY),则只计算年份。

3 个答案:

答案 0 :(得分:2)

根据我的经验,它最好使用两个日期之间的天数,然后将该数量除以365.25确切,然后四舍五入到几年。这将为您提供我认为最精确的年龄。

答案 1 :(得分:1)

计算某人年龄的正确答案,或两个日期之间截断年份的差异是

year(@today)-year(@birthDate)+floor((month(@today)-month(@birthdate)+floor((day(@today)-day(@birthdate))/31))/12);

无论闰年如何,这都会有效。并纠正该人是否出生在同一个月的晚月甚至更晚的一天。这也会忽略小时和分钟,就像计算某人的年龄时一样。

答案 2 :(得分:0)

在 DateDiff 中使用“yyyy”时,仅使用日期的年份部分来计算差异。月和日被省略。这会在一年内产生有时正确有时不正确的结果。

尝试改用这个。

SELECT Int((#2016-07-23#-#1963-07-22#)/365.25);