我有一个包含2列的表。一个叫做“houranddate”,是日期时间类型,另一个叫做“status”,是int类型。 当服务器日期时间到达“houranddate”列中保存的相同日期时间值时,我希望“status”列中的值更新为“1”。
我是否有机会在sql server MS中设置它,或者唯一的方法是使用某些Web服务?
答案 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