我有一个包含几列用作datetime
标记的表格。该表包含以下列
UpDate datetime
SearchDate datetime
ExpDate dateadd(hour,24,UpDate)
Active nvarchar(5)
当每日导入更新UpDate
列时,计算列ExpDate
将更新时间+ 24小时。当当前日期时间小于Active
时,我希望'Y'
列指示ExpDate
当前日期时间等于或大于{{1}时'N'
}}
我想过只使用存储过程无限期运行来检查并根据需要进行更新,但这样做没有意义,并且想知道是否有人对如何执行此操作有任何其他建议。例如,如果我可以根据IF语句查询将其用作计算列。
答案 0 :(得分:2)
除非你有充分的理由坚持ExpDate
和Active
的计算,否则我认为你应该在对你的桌子的查询中进行计算。
这样的事情:
select [UpDate],
SearchDate,
dateadd(hour, 24, SearchDate) as ExpDate,
case when getdate() >= dateadd(hour, 24, SearchDate)
then 'N'
else 'Y'
end as Active
from YourTable
如果您想要计算列,您的DDL将如下所示:
create table YourTable
(
[UpDate] datetime,
SearchDate datetime,
ExpDate as dateadd(hour, 24, SearchDate),
Active as case when getdate() >= dateadd(hour, 24, SearchDate)
then 'N'
else 'Y'
end
)