我数据库有N条数据,我想以当前时间开始比较,判断超过7天的datatime的数据删除掉,用一个定时器每天定时删除超过7天的数据

解决方案 »

  1.   

    首先创建一存储过程
        
    然后在定义一JOB来执行就OK!
      

  2.   


    begin
      sys.dbms_job.submit(job => :job,
                          what => 'delete tab where datatime < sysdate - 7;',  /*这个根据你要删除的条件写*/
                          next_date => to_date('21-09-2011 17:20:11', 'dd-mm-yyyy hh24:mi:ss'), /*这个是你第一次要执行的时间,你可以根据你的要求写*/
                          interval => 'TRUNC(SYSDATE)+1');   /*这个是执行时间间隔,现在这个是每天凌晨0点开始执行,你可以根据你实际情况修改*/
      commit;
    end;
    /
      

  3.   

    Oracle不是有个闪回的功能么~
    10G之后的好像是默认开这个功能的哦~
    你可以进到EM里面,在表管理的那一块,有相应的按钮的~
      

  4.   

    做删除用的存储过程你肯定会写吧,
    现在就是写一个能定时执行你的存储过程的东东就行了呗!
    OK,这个东东就是job了!
    --创建你的存储过程
    create or replace procedure DELTEST--创建job,没7天执行一次你的存储过程
    declare job1 number;
    begin 
     dbms_job.submit(job1,'DELTEST;','sysdate+7');
      COMMIT;
    end;
    /
      

  5.   

    mysql 用event时间调度就可以实现的。类似oracle的job功能
      

  6.   

    我主要想知道如何用两个时间比较是否大于7天,是否有那个时间函数可以比较出来
    比如delete table where 时间函数(datatime+currentTime)>7
    来删除超过当前时间7天的数据
      

  7.   

    两个时间类型的值减一下就可以了,比如:
    delete from table where trunc(currentTime - dateTime) > 7 
    currentTime,dateTime这两字段要都是date型的,如果不是就用to_date函数转为date型的
      

  8.   

    delete demo where adddate(to_date(adddate) -to_date(20110927))>7  
    orcale可以这么将日期相减吗??????
      

  9.   

    你没试过怎么知道不可以呢?可以想减的,减下来的结果单位是天,不满一天的会有小数,所以要加上trunc函数取整数
      

  10.   

    我本地没有ORCALE,试不了,postgres执行了这条select * from tbl_alarminfo where  alarmoccurtime trunc((to_date(alarmoccurtime) - to_date(20100929)))>7有问题
      

  11.   

    delete table where test_date> trunc(sysdate,'DD')-1
      

  12.   

    delete from table where test_date> trunc(sysdate,'DD')-7
      

  13.   


    --用这个
    select * from tbl_alarminfo where trunc(to_date(alarmoccurtime,'yyyymmdd') - to_date('20100929','yyyymmdd')) > 7;
    --如果时间中没有时分秒,那减下来的就是整数天,可以不要trunc。如果有时分秒就要trunc了,而且to_date后的时间格式就要写成'yyyymmddhh24miss'