在出生日期到达SQL Server时自动更新年龄

时间:2017-08-08 08:58:44

标签: sql-server-2008

我需要更新年龄列而不做任何事情。

每当出生日期发生变化时,它应自动更新年龄栏 - 是否有任何解决方案?

这适用于SQL Server 2008

请帮帮我

1 个答案:

答案 0 :(得分:2)

如果您已经拥有表中的出生日期,那么Age实际上只是计算。您可以将其存储为每次出生日期更改时自动更新的计算列 - 或者您可以根据需要在SELECT中进行计算。

问题是:您需要什么样的“精确度”年龄? SQL Server中的DATEDIFF函数有点“粗略” - DATEDIFF(YEAR, ....)计算,例如只查看两个日期的 - 所以

DATEDIFF(YEAR, '20171231', '20180101')

将返回 1 - 即使这两个日期 - 2017年12月31日和2018年1月1日 - 相隔仅一天。

您可以尝试这样的事情:

CREATE TABLE dbo.Employees
(
    EmployeeID INT NOT NULL IDENTITY(1000, 11)
        PRIMARY KEY CLUSTERED,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    DateOfBirth DATE,
    AgeInYears AS DATEDIFF(YEAR, DateOfBirth, SYSDATETIME()),
    AgeInMonths AS DATEDIFF(MONTH, DateOfBirth, SYSDATETIME()),
    AgeInDays AS DATEDIFF(DAY, DateOfBirth, SYSDATETIME())
)

然后查看哪个“年龄”(以天,月或年为单位)足以满足您的需求。