Sql server 关于从数据库中删除旧记录的问题

Sql server 关于从数据库中删除旧记录的问题,sql-server,tsql,Sql Server,Tsql,所以我有一个SQL Server表 此表有一列,显示插入时的日期时间 如何运行总是删除24小时前记录的程序?从何处删除

所以我有一个SQL Server表

此表有一列,显示插入时的日期时间

如何运行总是删除24小时前记录的程序?

从何处删除DELETE FROM <tableName> WHERE <col> < getdate()-1 

是的,请看以下内容:

然后只需安排查询:

delete from table_name where date_created < dateadd(d,-1,GETDATE())
从创建日期的表名称中删除
我想在这次讨论中补充几点

  • 为了避免扫描主键,请确保给定的datetime列上有一个索引(唯一或不取决于数据)
  • 还检查您试图使用的语句的执行计划,并考虑将其封装在具有后续回滚的事务中,这样您就可以重复该过程并评估其差异。 例如: 比较

    date_created < dateadd(d,-1,GETDATE())
    
    date\u创建

    date\u创建

    显示dateadd函数为评估增加了相当大的开销,虽然它比扫描PK更快,但最好还是选择最快的选项。

    我的问题主要是如何设置类似的内容,以确保数据库中没有超过24小时的记录,但是,这不是只删除前一天的记录,不考虑小时数等吗?
    getdate()
    函数返回当前日期时间;从中减去1将减去24小时,保持时间信息完整(例如,
    select cast('2011-04-05 12:24:39.943'作为datetime)-1='2011-04-04 12:24:39.943'
    )。您只需将未来日期插入deleteAfter或expirationDate列,删除delete语句中的任何计算并将其移动到insert中。当然,你的里程可能会有所不同,所以基准,基准,基准。
    date_created < getdate()-1