我需要更新年龄列而不做任何事情。
无论何时出生日期改变,它都应该自动更新年龄列--有什么解决办法吗?
这是用于Server 2008的
请帮帮我
发布于 2017-08-08 09:11:00
如果您的表中已经有了出生日期,那么Age实际上只是一个计算。您可以将其存储为计算列,每次出生日期发生变化时都会自动更新,或者只需在SELECT中计算。
问题是:你需要多少“精确”的年龄?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())
)然后看看哪个“年龄”(以天、月或年为单位)对于你的需求来说是足够准确的。
https://stackoverflow.com/questions/45563872
复制相似问题