我需要在不执行任何操作的情况下更新年龄列。
每当出生日期发生变化时,它都应该自动更新年龄列 - 有什么解决方案吗?
这是针对 SQL Server 2008
请帮助我
如果您的表格中已经有出生日期,那么Age
实际上只是一个计算。您可以将其存储为每次出生日期更改时自动更新的计算列 - 或者您可以根据需要在SELECT
中计算它。
问题是:你需要什么样的年龄"精确"?SQL Server中的DATEDIFF
函数有点"粗糙" -DATEDIFF(YEAR, ....)
计算例如只查看两个日期的年份- 所以
DATEDIFF(YEAR, '20171231', '20180101')
将返回1- 即使这两个日期 - 2017 年 12 月 31 日和 2018 年 1 月 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())
)
然后查看哪个"年龄"(以天、月或年为单位(足以满足您的需求。