开发者社区 问答 正文

SQL Server代理在午夜删除记录

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

有什么可以解决这个问题。

谢谢您的帮助

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 11:37:53 617 分享 版权
1 条回答
写回答
取消 提交回答
  • 不要采取这种方法!使用视图,然后再清理作业。

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

    2019-11-18 11:38:01
    赞同 展开评论