sql server 2008 -使用计算列或存储过程



我有一个表,其中有几列用作datetime邮票。该表包含以下列

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

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

我想只是使用存储过程无限期地运行来检查这一点并根据需要更新,但这没有意义,想知道是否有人对如何做到这一点有任何其他建议。例如,如果我可以使用它作为计算列以及基于if语句查询。

除非您有很好的理由坚持ExpDateActive的计算,否则我认为您应该在对表的查询中进行计算。

像这样:

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
)

相关内容

  • 没有找到相关文章

最新更新