一尘不染

使用SQL Server从sysdate和birthdate计算年龄

sql

这个问题已经在这里有了答案

8年前关闭。

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

我只是尝试使用生日日期变量来计算年龄(以年为单位)

1932-04-29 00:00:00.000

和SQL Server中的SYSDATETIME(),其中

SELECT year(Sysdatetime() - Birthdate) as Age

出品(出乎意料):1980

我错过了什么?我预计会得到80!


阅读 307

收藏
2021-03-17

共1个答案

一尘不染

计算年龄并不像它初看起来那样简单。

如果使用Datediff,则绝对年份之间的差值不是年龄。

例如

select DATEDIFF(yy, '1980-12-31', getdate())

将返回32,而相关人员的年龄为31。

对于您的目的,这可能足够准确。更准确,但仍然有误,您可以使用

select convert(int,DATEDIFF(d, '1933-10-31', getdate())/365.25)

大多数情况 下这是正确的。

或者,您可以编写一个更复杂的函数。

2021-03-17