在SQL Server中自动更新具有特殊日期的列

时间:2013-07-07 08:43:46

标签: sql sql-server

我有一个包含2列的表:

  1. ExpireDate(日期时间)
  2. IsExpired(位)。
  3. 如果ExpireDate >= Today Date并将IsExpired列从false更改为true,我是否可以自动检查?

    事实上,我希望这个过程发生在ExpireDate中的每条记录中,我不想手动检查所有记录,以找到重新编码过期然后更改IsExpired列。

3 个答案:

答案 0 :(得分:3)

您可以使用如下更新查询更改IsExpired字段:

UPDATE table SET IsExpired = 1 WHERE ExpireDate >= GetDate()

如果您希望它自动发生,您可以使用SQL Server代理安排执行此操作的作业。

答案 1 :(得分:1)

请尝试以下操作:

update yourtablename
set isexpired = 1
where ExpireDate >= convert(date,getdate())

答案 2 :(得分:1)

如果您希望自动执行此操作,请使用视图或computed column。您可以添加如下计算列:

alter table YourTable
   add column isexpired as (case when ExpireDate >= getdate() then 1 else 0 end);

(您可能必须先删除该列。)

计算列的优点是它永远不会过时。