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

时间:2015-03-17 10:47:46

标签: sql oracle date datetime sql-delete

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

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

2 个答案:

答案 0 :(得分:10)

如果您想要 24小时,请执行以下操作:

where event_date < sysdate - 1

如果您想在昨天之前 ,请执行以下操作:

where event_date < trunc(sysdate) - 1

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

答案 1 :(得分:1)

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

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

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