plsql按时间循环删除数据

这是一个PL/SQL脚本,用于按天和小时从datastore表中批量删除数据。脚本首先计算出指定日期前的天数或小时数,然后通过循环逐个删除时间段内的记录。注意,此脚本可能会导致大量数据丢失,务必谨慎使用。
摘要由CSDN通过智能技术生成

按天删除数据

declare 
  HOWMANY_10MINS NUMBER;
  SPECIFY_TIME   DATE := TO_DATE('2020/09/15 23:59:59','yyyy/MM/dd hh24:mi:ss');--截止日期
  BEGIN_TIME     DATE;
  END_TIME       DATE;
begin
  SELECT (SPECIFY_TIME - TRUNC(MIN(T.sampletime), 'DD')) HOWMANY_10MINS
    INTO HOWMANY_10MINS
    FROM datastore T;--获取间隔天数
  FOR X IN 0 .. HOWMANY_10MINS LOOP
    BEGIN_TIME := SPECIFY_TIME - (X + 1) ;--增量1
    END_TIME   := SPECIFY_TIME - X;
    -- delete 操作,请批改删除表信息,及 where 过滤条件。
    DELETE FROM datastore T
     WHERE T.sampletime BETWEEN BEGIN_TIME AND END_TIME;--时间条件
    COMMIT;
  END LOOP;
end;

按小时删除,如果本身显示只有天的话,可能有问题

declare 
  HOWMANY_10MINS NUMBER;
  SPECIFY_TIME   DATE := TO_DATE('2020/09/19 23:59:59','yyyy/MM/dd hh24:mi:ss');
  BEGIN_TIME     DATE;
  END_TIME       DATE;
begin
  SELECT (SPECIFY_TIME - TRUNC(MIN(T.sampletime), 'DD')) * 24 HOWMANY_10MINS
    INTO HOWMANY_10MINS
    FROM datastore T;
  FOR X IN 0 .. HOWMANY_10MINS LOOP
    BEGIN_TIME := SPECIFY_TIME - (X + 1)/24 ;
    END_TIME   := SPECIFY_TIME - X/24;
    -- delete 操作,请批改删除表信息,及 where 过滤条件。
    DELETE FROM datastore T
     WHERE T.sampletime BETWEEN BEGIN_TIME AND END_TIME;
    COMMIT;
  END LOOP;
end;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值