在SQL中找到某人的年龄

Tim*_*m C 8 sql t-sql sql-server

在SQL Server数据库中,我记录人们的出生日期.是否有一种直接的方法只使用SQL来计算给定日期的人的年龄?

使用DATEDIFF(YEAR,DateOfBirth,GETDATE())不起作用,因为它只查看日期的年份部分.例如,DATEDIFF(YEAR,'2007年12月31日','2008年1月1日')返回1.

sca*_*ble 21

看看这篇文章:如何使用SQL代码计算一个人的年龄

这是文章中的代码:

DECLARE @BirthDate DATETIME
DECLARE @CurrentDate DATETIME

SELECT @CurrentDate = '20070210', @BirthDate = '19790519'

SELECT DATEDIFF(YY, @BirthDate, @CurrentDate) - CASE WHEN( (MONTH(@BirthDate)*100 + DAY(@BirthDate)) > (MONTH(@CurrentDate)*100 + DAY(@CurrentDate)) ) THEN 1 ELSE 0 END 
Run Code Online (Sandbox Code Playgroud)

  • 你真的可以把相关的代码放在你的答案中吗?与其他网站的链接可以(并且确实)中断,因此将来如果链接不再有效,此答案可能没有用. (2认同)

Mar*_*ham 5

还有另一种方法更简单:

Select CAST(DATEDIFF(hh, [birthdate], GETDATE()) / 8766 AS int) AS Age
Run Code Online (Sandbox Code Playgroud)

因为这里的舍入是非常精细的,所以这几乎是完全准确的.例外是如此令人费解,以至于它们几乎是幽默的:如果我们A)要求在上午6:00之前的年龄,B)在这个人的生日和C)他们的生日是在之后,每四年回来的年龄将是一年太年轻2月28日.在我的环境中,这是一个完全可以接受的妥协.