求教一条定时器的SQL语句。。希望大牛帮忙啊 我数据库有N条数据,我想以当前时间开始比较,判断超过7天的datatime的数据删除掉,用一个定时器每天定时删除超过7天的数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先创建一存储过程 然后在定义一JOB来执行就OK! 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;/ Oracle不是有个闪回的功能么~10G之后的好像是默认开这个功能的哦~你可以进到EM里面,在表管理的那一块,有相应的按钮的~ 做删除用的存储过程你肯定会写吧,现在就是写一个能定时执行你的存储过程的东东就行了呗!OK,这个东东就是job了!--创建你的存储过程create or replace procedure DELTEST--创建job,没7天执行一次你的存储过程declare job1 number;begin dbms_job.submit(job1,'DELTEST;','sysdate+7'); COMMIT;end;/ mysql 用event时间调度就可以实现的。类似oracle的job功能 我主要想知道如何用两个时间比较是否大于7天,是否有那个时间函数可以比较出来比如delete table where 时间函数(datatime+currentTime)>7来删除超过当前时间7天的数据 两个时间类型的值减一下就可以了,比如:delete from table where trunc(currentTime - dateTime) > 7 currentTime,dateTime这两字段要都是date型的,如果不是就用to_date函数转为date型的 delete demo where adddate(to_date(adddate) -to_date(20110927))>7 orcale可以这么将日期相减吗?????? 你没试过怎么知道不可以呢?可以想减的,减下来的结果单位是天,不满一天的会有小数,所以要加上trunc函数取整数 我本地没有ORCALE,试不了,postgres执行了这条select * from tbl_alarminfo where alarmoccurtime trunc((to_date(alarmoccurtime) - to_date(20100929)))>7有问题 delete table where test_date> trunc(sysdate,'DD')-1 delete from table where test_date> trunc(sysdate,'DD')-7 --用这个select * from tbl_alarminfo where trunc(to_date(alarmoccurtime,'yyyymmdd') - to_date('20100929','yyyymmdd')) > 7;--如果时间中没有时分秒,那减下来的就是整数天,可以不要trunc。如果有时分秒就要trunc了,而且to_date后的时间格式就要写成'yyyymmddhh24miss' 多行记录插入的问题 关于Oracle大批量计算的问题 Oracle union效率 sql语句长度问题 Linux下安装orcle9i,界面出现乱码 jdk 1.5 有没有人解释一些,Oracle各种服务的功能 怎么删除一个表中的相同记录? 怎样判断本机的客户端版本 ORACLE的存储过程中能读写文件吗? 新手,麻烦看看2个SQL的记录数不同 oracle存储过程游标返回问题 创建应用环境问题
然后在定义一JOB来执行就OK!
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;
/
10G之后的好像是默认开这个功能的哦~
你可以进到EM里面,在表管理的那一块,有相应的按钮的~
现在就是写一个能定时执行你的存储过程的东东就行了呗!
OK,这个东东就是job了!
--创建你的存储过程
create or replace procedure DELTEST--创建job,没7天执行一次你的存储过程
declare job1 number;
begin
dbms_job.submit(job1,'DELTEST;','sysdate+7');
COMMIT;
end;
/
比如delete table where 时间函数(datatime+currentTime)>7
来删除超过当前时间7天的数据
delete from table where trunc(currentTime - dateTime) > 7
currentTime,dateTime这两字段要都是date型的,如果不是就用to_date函数转为date型的
orcale可以这么将日期相减吗??????
--用这个
select * from tbl_alarminfo where trunc(to_date(alarmoccurtime,'yyyymmdd') - to_date('20100929','yyyymmdd')) > 7;
--如果时间中没有时分秒,那减下来的就是整数天,可以不要trunc。如果有时分秒就要trunc了,而且to_date后的时间格式就要写成'yyyymmddhh24miss'