从oracle表中删除超过一天的行

时间:2019-10-16 19:20:32

标签: sql oracle

我有一张桌子-

GENERIC_RECORDS (ENTRY_NO NUMBER, 
                 DATE_TIME VARCHAR2(25) , 
                 LOG_ID VARCHAR2(20), 
                 LOG_FILE_NAME VARCHAR2(200));

ENTRY_NO     DATE_TIME                  LOG_ID    LOG_FILE_NAME
1            2019-08-23 16:59:29.867    123       Log_temp1
2            2019-08-31 17:32:42.019    124       Log_temp2
3            2019-09-28 15:30:41.019    125       Log_temp3
4            2019-10-16 10:30:39.014    126       Log_temp4

我想从该表中删除早于1天的记录。在上面的示例中,只有最后一条记录应该保留

谢谢

2 个答案:

答案 0 :(得分:1)

您可以将deletewhere子句一起使用:

delete from generic_records
    where date_time < to_char(sysdate - interval '1' day, 'YYYY-MM-DD HH24:MI:SS')

我建议您在尝试进行此操作之前先备份一下桌子,以确保不会造成永久性损害。

答案 1 :(得分:0)

那是我的解决办法:

delete from GENERIC_RECORDS where to_date(substr(date_time,1,19), 'YYYY-MM-DD HH24:MI:SS') < sysdate;