我必须根据DB2中的时间戳删除30天前的数据。

问题描述 投票:0回答:1

我有一个要求,在DB2中删除30天以前的记录,我使用下面的代码删除,它工作正常,但当前的时间戳一直在变化。我使用下面的代码来删除,它工作得很好,但当前时间戳一直在变化。这导致我的过程进入循环。

DELETE FROM TABLE 
WHERE TIMESTAMP_FIELD < CURRENT TIMESTAMP - 31 DAYS

我使用我的过程作为通用删除,所以我将无法使用主机变量。我试过 subdate ADDDATE 但没有运气。

请帮助我。

谅谅

stored-procedures db2 dynamic-programming cobol
1个回答
2
投票

当前时间戳是不断变化的,所以如果你用它来比较微秒级的时间戳,你有可能会追着自己的尾巴跑。

如果你需要一个不那么精确的值来用于删除,你可以把当前日期--31天和'00:00:00'(午夜)放在一起。 这个值只有在当前日期发生变化时才会发生变化,因此您的结果更可预测。

  DELETE FROM TABLE 
  WHERE TIMESTAMP_FIELD < TIMESTAMP(CURRENT DATE - 31 DAYS, '00:00:00') 
© www.soinside.com 2019 - 2024. All rights reserved.