当系统日期时间达到保存在其他列中的日期时间时,如何更新列值?在 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
我有一个 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