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

I have to delete 30 days old data based on timestamp in DB2

我需要删除 DB2 中 30 天前的记录。我使用下面的代码删除,它工作正常但当前时间戳不断变化。这导致我的程序继续循环。

DELETE FROM TABLE 
WHERE TIMESTAMP_FIELD < CURRENT TIMESTAMP - 31 DAYS

我将我的过程用作通用删除,因此我将无法使用主机变量。我试过 subdate ADDDATE 但没有成功。

请帮帮我。

谢谢

当前时间戳不断变化,因此如果您将其用于微秒级别的比较,您很可能会追逐自己的尾巴。

如果您需要一个不太精确的值来用于删除,您可以将当前日期 - 31 天加上“00:00:00”(午夜)。此值只会在当前日期发生变化时发生变化,因此您的结果更容易预测。

  DELETE FROM TABLE 
  WHERE TIMESTAMP_FIELD < TIMESTAMP(CURRENT DATE - 31 DAYS, '00:00:00')