0

我有一张桌子,上面有几列用作datetime邮票。该表包含以下列

UpDate      datetime
SearchDate  datetime
ExpDate     dateadd(hour,24,UpDate)
Active      nvarchar(5)

UpDate列通过每日导入更新时,计算列ExpDate将更新时间 + 24 小时。我希望该Active列指示'Y'当前日期时间何时小于ExpDate以及'N'当前日期时间何时等于或大于ExpDate

我想只使用存储过程来无限期地运行以检查并根据需要进行更新,但这没有意义,并且想知道是否有人对如何执行此操作有任何其他建议。例如,如果我也可以基于 IF 语句查询将其用作计算列。

4

1 回答 1

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
)
于 2013-01-02T16:48:01.533 回答