我需要更新年龄列而不做任何事情。
每当出生日期发生变化时,它应自动更新年龄栏 - 是否有任何解决方案?
这适用于SQL Server 2008
请帮帮我
答案 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())
)
然后查看哪个“年龄”(以天,月或年为单位)足以满足您的需求。