【问题标题】:How to delete records base on a date and offset如何根据日期和偏移量删除记录
【发布时间】:2009-12-15 16:55:57
【问题描述】:

如果当前日期大于记录创建日期+预设天数(由@numberOfDays 定义),我需要删除表中的记录。我正在使用以下 SQL 语句,但不确定它是否非常有效。有没有更好的办法?

我正在使用 MS SQL 2008 服务器。

DELETE
FROM deviceManager.Test2
WHERE DATEADD(day, @numberOfDays, deviceManager.Test2.GeneratedAt_UTC) < SYSDATETIMEOFFSET()

@numberOfDays 是一个值为 10 的 int

【问题讨论】:

    标签: sql date


    【解决方案1】:

    调整当前日期而不是表中的每条记录可能会更好。将逻辑更改为“记录创建日期早于当前日期时间 - @numberOfDays”。

    这样更有效 - 一次计算而不是多次。

    【讨论】:

    • 你能告诉我如何将 int 转换为一天,以便我可以执行当前的日期时间 - 天数吗?
    • 试试day &lt; DATEADD(SYSDATETIMEOFFSET(), -@numberOfDays, deviceManager.Test2.GeneratedAt_UTC)(除非您有可用的 DATESUB 函数)。
    【解决方案2】:

    对我来说似乎没问题,我想不出更好的方法。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      相关资源
      最近更新 更多