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

How to update column value when system datetime reach datetime saved in other column? in sqlserver

我有一个 table 有 2 列。一个叫"houranddate",是datetime类型,一个叫"status",是int类型。 当服务器日期时间达到保存在列 "houranddate".

中的相同日期时间值时,我希望 "status" 列中的值更新为“1”

我是否有可能在 sql 服务器 MS 中设置它,或者唯一的方法是使用一些网络服务?

在SQL服务器中,您可以使用计算列:

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);

计算列是在使用时计算的。所以,它总是up-to-date,没有使用工作或update

您可以使用 SQL 代理计划作业来执行此操作,但我不推荐这样做。最好在 select 语句中处理此类事情:

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