我对SQL有点陌生,所以如果这个问题不太清楚,我会提前道歉。 我想在SQL Server代理中创建一个作业,该作业将在24小时后删除一行。我的问题是SQL Server代理会在午夜而不是24小时后删除记录,例如,如果我在下午3点创建记录,那么该记录将在上午12点而不是第二天下午3点删除。
有什么可以解决这个问题的吗?
感谢您的帮助
我对SQL有点陌生,所以如果这个问题不太清楚,我会提前道歉。 我想在SQL Server代理中创建一个作业,该作业将在24小时后删除一行。我的问题是SQL Server代理会在午夜而不是24小时后删除记录,例如,如果我在下午3点创建记录,那么该记录将在上午12点而不是第二天下午3点删除。
有什么可以解决这个问题的吗?
感谢您的帮助
不要采用这种方法!使用视图,然后再清理作业。
-- Have an expiration column in the table
create table t (
. . .
expire_datetime datetime
);
-- Filter out the unexpired rows for the view
create view v_t as
select t.*
from t
where expire_datetime > getdate();
创建记录时可以设置expire_datetime
。或者,如果您愿意,也可以只是创建日期时间加上24小时:
alter table t add expire_datetime as (dateadd(hour,24,createdAt));
通过视图进行所有访问。然后,您可以定期运行作业以删除过期的记录。您可以每天一次,每小时一次,每周一次-随时进行此操作。