在 oracle SQL 中删除超过 24 小时的记录

delete records older than 24 hours in oracle SQL

我想删除所有超过 24 小时的记录。我正在使用下面的查询进行相同的查询,但有时 运行 并不完美。我想知道我的查询是对还是错?或者哪种方法更好。

delete from TEMP_SERVICE_OPTION where EVENT_DATE < TRUNC(SYSDATE) - 1;

如果您想要早于 24 小时,那么请执行:

where event_date < sysdate - 1

如果你想在昨天之前,那么做:

where event_date < trunc(sysdate) - 1

至于性能,这取决于要删除多少行。如果您的 table 只有数千行,那么这很好。如果它有数百万行,那么您可能需要 event_date 上的索引。或者,您甚至可能想采用不同的方法——将数据选择到临时 table,截断原始 table,然后重新插入它。

您的查询正在删除 EVENT_DATE 昨天之前的记录。

如果要删除超过 24 小时的记录,请尝试:

delete from TEMP_SERVICE_OPTION where (SYSDATE - EVENT_DATE) > 1;