我有下表:
StartDate | EndDate | Value | Active - and some other columns
如果小于今天,我想自动设置Active
为 false 。EndDate
有什么办法可以做到吗?我正在使用 Sql Server 2008 R2。
我的意思是自动是这样的:
结束日期是 2013 年 9 月 14 日,一旦时钟到达 00:00,今天是 9 月 15 日,我想将该行标记为非活动 - 错误。
我有下表:
StartDate | EndDate | Value | Active - and some other columns
如果小于今天,我想自动设置Active
为 false 。EndDate
有什么办法可以做到吗?我正在使用 Sql Server 2008 R2。
我的意思是自动是这样的:
结束日期是 2013 年 9 月 14 日,一旦时钟到达 00:00,今天是 9 月 15 日,我想将该行标记为非活动 - 错误。
如果您的意思是update
立即运行,那么您可以使用它...
UPDATE tblName
SET Active = 'False'
WHERE CAST(EndDate AS DATE) > CAST(GETDATE() AS DATE)
AND (Active = 'True' OR Active IS NULL)
如果是今天EndDate
之前...
UPDATE tblName
SET Active = 'False'
WHERE CAST(EndDate AS DATE) < CAST(GETDATE() AS DATE)
AND (Active = 'True' OR Active IS NULL)
如果这不是您要查找的内容,请在问题中添加更多具体信息,我会更新答案。
至于自动调用它,您可以设置SQL Server 作业或使用Windows 服务调用计时器上的存储过程。
我看到您正在寻找它是“自动的”...为什么不使用视图...即:
CREATE VIEW [dbo].[vTest]
AS
SELECT [StartDate] ,
[EndDate] ,
[Value] ,
CAST(CASE WHEN loaddate > GETDATE() THEN 1
ELSE 0
END AS BIT) AS Active
FROM TestTable
通过这种方式,您可以处理视图,该视图将自动始终在 Active 的“派生字段”中具有正确的值...
干杯,诺亚