从存储的出生日期确定年龄

时间:2014-01-08 10:57:55

标签: sql sql-server database

我只看到过来自作为参数传递的DOB的SQL计算年龄。我将如何从已存储的DOB作为date类型执行此操作?

我认为这会有效,但尽管有2000年至2006年的DOB,但它不会返回任何行。

Select DateDiff(YEAR, dob, CURRENT_TIMESTAMP) as ageYears
from users

1 个答案:

答案 0 :(得分:2)

多年的年龄稍微复杂,因为DATEDIFF计算边界过渡(新年前夕 - >新年日) 1

这应该给出正确答案:

Select DateDiff(YEAR, dob, CURRENT_TIMESTAMP) - 
  CASE WHEN
        DATEADD(year,DateDiff(YEAR, dob, CURRENT_TIMESTAMP),CURRENT_TIMESTAMP)
        > CURRENT_TIMESTAMP
       THEN 1
       ELSE 0 END as ageYears
from users

1 这意味着更简单的DateDiff(YEAR, dob, CURRENT_TIMESTAMP)将为2013年12月31日出生的人提供1的答案,对于2014年1月1日的查询。大多数人认为是这个年龄的错误答案。