【问题标题】:Deleting records having a date older than 3 days, for rolling 3 day job?删除日期超过 3 天的记录,用于滚动 3 天的工作?
【发布时间】:2011-01-03 14:52:25
【问题描述】:

在执行敏感的 sql 命令之前,我想做一个健全性检查。

我正在尝试删除 [LoadDt] 日期值早于 3 天的记录,我的代码是:

delete IntraDayStats
where DATEDIFF(dd, LoadDt, dateadd(d,-3, getdate()) ) >= 3 

我想将此安排为 sql 作业,以便我的 IntraDayStats 表具有滚动 3 天的历史记录。该作业将每晚运行。

【问题讨论】:

    标签: sql-server-2005 datediff sql-delete


    【解决方案1】:
    where DATEDIFF(dd, LoadDt, dateadd(d,-3, getdate()) ) >= 3 
    

    不可搜索(不会使用索引),请使用

    where LoadDt < getdate()- 3 
    

    下次如果您想检查,请将DELETE 设置为SELECT,然后看看您会得到什么

    【讨论】:

    • 什么是 sargable ?我从来没有听说过这个......我做了选择,但想仔细检查滚动三天的逻辑。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多