SQL Server代理在午夜删除记录

问题描述 投票:0回答:1

我对SQL有点陌生,所以如果这个问题不是很清楚,我会提前道歉。我想在SQL Server代理中创建一个作业,该作业将在24小时后删除一行。我的问题是SQL Server代理会在午夜而不是24小时后删除记录,例如,如果我在下午3点创建记录,则记录将在上午12点而不是第二天下午3点删除。

有什么可以解决此问题的方法。

感谢您的帮助

sql sql-server sql-server-2017 sql-server-agent
1个回答
0
投票

不要采用这种方法!使用视图,然后再清理作业。

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

通过视图进行所有访问。然后,您可以定期运行作业以删除过期的记录。您可以每天一次,每小时一次,每周一次-随时进行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.