我对SQL有点陌生,所以如果这个问题不太清楚,我会提前道歉。我想在SQL Server代理中创建一个作业,该作业将在24小时后删除一行。我的问题是SQL Server代理在午夜而不是24小时后删除记录,例如,如果我在下午3点创建记录,则记录将在凌晨12点而不是第二天下午3点删除。
有什么可以解决这个问题。
谢谢您的帮助
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
不要采取这种方法!使用视图,然后再清理作业。
-- 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)); 通过视图进行所有访问。然后,您可以定期运行作业以删除过期的记录。您可以每天一次,每小时一次,每周一次-随时进行此操作。