使用 Datediff (?) 计算用户年龄
Calculate Age of user WITH Datediff (?)
我正在尝试使用 Datediff 函数来计算用户的年限,但这比我想象的要复杂。
SELECT DATEDIFF( DD,'1963-07-22','2016-07-23')
这将给我 19360 天,我认为这是因为 2016 年是闰年,这很好。
我想做的是获取 YEAR 而不是日期。
如果我将间隔从 DD 更改为 YY(YYYY),它只会计算年份。
根据我的经验,最好使用两个日期之间的天数,然后准确地说将该天数除以 365.25,然后四舍五入为偶数年。这会给你我认为最精确的年龄。
计算某人年龄或两个日期之间截断年份的差异的正确答案是
year(@today)-year(@birthDate)+floor((month(@today)-month(@birthdate)+floor((day(@today)-day(@birthdate))/31))/12);
无论闰年如何,这都有效。并更正此人是出生在下个月还是同一个月的后一天。这也将忽略小时和分钟,计算某人的年龄时应该如此。
在 DateDiff 中使用“yyyy”时,仅使用日期的年份部分来计算差异。月份和日期被省略。这将产生有时正确有时不正确的结果一年。
试试用这个代替。
SELECT Int((#2016-07-23#-#1963-07-22#)/365.25);
我正在尝试使用 Datediff 函数来计算用户的年限,但这比我想象的要复杂。
SELECT DATEDIFF( DD,'1963-07-22','2016-07-23')
这将给我 19360 天,我认为这是因为 2016 年是闰年,这很好。
我想做的是获取 YEAR 而不是日期。
如果我将间隔从 DD 更改为 YY(YYYY),它只会计算年份。
根据我的经验,最好使用两个日期之间的天数,然后准确地说将该天数除以 365.25,然后四舍五入为偶数年。这会给你我认为最精确的年龄。
计算某人年龄或两个日期之间截断年份的差异的正确答案是
year(@today)-year(@birthDate)+floor((month(@today)-month(@birthdate)+floor((day(@today)-day(@birthdate))/31))/12);
无论闰年如何,这都有效。并更正此人是出生在下个月还是同一个月的后一天。这也将忽略小时和分钟,计算某人的年龄时应该如此。
在 DateDiff 中使用“yyyy”时,仅使用日期的年份部分来计算差异。月份和日期被省略。这将产生有时正确有时不正确的结果一年。
试试用这个代替。
SELECT Int((#2016-07-23#-#1963-07-22#)/365.25);