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 
还有另一种方法更简单:
Select CAST(DATEDIFF(hh, [birthdate], GETDATE()) / 8766 AS int) AS Age
因为这里的舍入是非常精细的,所以这几乎是完全准确的.例外是如此令人费解,以至于它们几乎是幽默的:如果我们A)要求在上午6:00之前的年龄,B)在这个人的生日和C)他们的生日是在之后,每四年回来的年龄将是一年太年轻2月28日.在我的环境中,这是一个完全可以接受的妥协.
| 归档时间: | 
 | 
| 查看次数: | 12264 次 | 
| 最近记录: |