当系统日期时间到达其他列中保存的日期时间时,如何更新列值?在sqlserver中

时间:2017-02-15 12:54:37

标签: sql-server sql-update ssms-2012

我有一个包含2列的表。一个叫做“houranddate”,是日期时间类型,另一个叫做“status”,是int类型。 当服务器日期时间到达“houranddate”列中保存的相同日期时间值时,我希望“status”列中的值更新为“1”。

我是否有机会在sql server MS中设置它,或者唯一的方法是使用某些Web服务?

2 个答案:

答案 0 :(得分:2)

在SQL Server中,您可以使用计算列:

alter table t
    add new_status as (case when datetimecol >= getdate() then 1 else status end);

(或者,在这种情况下,我要做的是将现有列命名为_status,将新列称为status。)

如果status在此之前为0,则删除现有的status列,而不是:

alter table t
    add status as (case when datetimecol >= getdate() then 1 else 0 end);

计算列在使用时计算。因此,它始终是最新的,不使用作业或update

答案 1 :(得分:1)

您可以使用SQL代理预定作业来执行此操作,但我不建议这样做。最好在select语句中处理这些事情:

SELECT houranddate, case when houranddate > getdate() then 1 else [status] end as [status]
FROM tablename