要求:oracle数据库,按照时间间隔2分钟查询数据,结果如第一行数据是13:55的数据,第二条就是13:57的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了要求:oracle数据库,按照时间间隔2分钟查询数据,结果如第一行数据是13:55的数据,第二条就是13:57的相关的知识,希望对你有一定的参考价值。

不好意,描述不清楚,把结果按2分钟来做过滤

参考技术A create view ........ select funcA() a,... from xxx........

在该函数 FuncA 中:
因为在函数中本身是不能有dml操作的,但我们可以这样实现,参考下面的 存储过程的实现

SQL> select * from test1;

A B
---------- --------------------
1 1
3 3
2 2

SQL>
SQL> CREATE or replace PROCEDURE insert_test
2 as
3 PRAGMA AUTONOMOUS_TRANSACTION;
4 BEGIN
5 insert into test1 values(6,6);
6 rollback;
7 END;
8 /

过程已创建。

SQL> begin
2 insert into test1 values(5,5);
3 insert_test;
4 commit;
5 end;
6 /

PL/SQL 过程已成功完成。

SQL> select * from test1;

A B
---------- --------------------
1 1
3 3
2 2
5 5

SQL>

这样在函数中可以进行dml操作并提交或者回退
然后前台查询的人的信息于是被保留在了数据库中
参考这里http://zhidao.baidu.com/browse/93?lm=8960&word=%CA%FD%BE%DD%BF%E2
参考技术B 如果是每隔2分钟做一次查询就用job 调用,如果是按照2分钟来分开数据,就写存储过程,这个和按照天来分割数据是一样的,只是时间上改改而已啊追问

现在的问题就是在于如何把分散查询出来的数据组合起来。能写个例子吗?

追答

可以在外面建立一个临时表,然后把你分散查询出来的数据都 insert 进去,让临时表做一个中转站,然后再给放到正式的目标表里面去。

追问

通过建立临时表已经测试成功,但由于我的数据量很大,这个效率很慢,除写入临时表之外还有其他方法吗?另外除了存储过程还有其他方法可以实现吗?

追答

数据量大用临时表比较合适,如果游标的什么的话会更慢,给表建立上索引应该会快不少,但是如果是十几万的数据,2分钟一次,再快也不会快到那里去的。。。。

本回答被提问者采纳
参考技术C 这个需求写的太简单了..

你是要把结果按2分钟来做过滤? 还是每隔两分钟做一次查询?追问

通过存储过程怎么实现?

使用oracle,如何做到某个时间段内每间隔1分钟查询出一条记录?

表里面有时间列,每秒钟都有数据录入.
貌似没表达清楚...我的意思是取出来一个数据的集合,这个集合里面的数据是某个时间段里面的数据中的距离开始时间每间隔1分钟的那些记录

参考技术A oracle中date-date是一个浮点数,以日为单位吧 ,你拿差一分钟的两个date格式数据相减,然后使用数据循环加这个数值就可以了 总之
date+float=date
date-date=float
希望你能看懂
参考技术B 你先写一个存储过程 里面完成 时间段内每间隔1分钟查询出一条记录 的功能
然后再建立一个job 让他每分钟执行一次这个过程嘛追问

貌似没表达清楚...我的意思是取出来一个数据的集合,这个集合里面的数据是某个时间段里面的数据中的距离开始时间每间隔1分钟的那些记录

追答

select * from
where mod((时间列 - 开始时间) * 24 * 60,1) = 0 --整数分钟
and 时间列 >= 时间段开始时间
and 时间列 <=时间段结束时间

估计这个sql比较慢

本回答被提问者采纳
参考技术C 这个存储过程查询一条记录,再写个job每隔一分钟执行一次你写的存储过程追问

貌似没表达清楚...我的意思是取出来一个数据的集合,这个集合里面的数据是某个时间段里面的数据中的距离开始时间每间隔1分钟的那些记录

参考技术D dbms_lock.slee(60)

以上是关于要求:oracle数据库,按照时间间隔2分钟查询数据,结果如第一行数据是13:55的数据,第二条就是13:57的的主要内容,如果未能解决你的问题,请参考以下文章

使用oracle,如何做到某个时间段内每间隔1分钟查询出一条记录?

Oracle中按照如何解决时间范围以及时间间隔抽取数据的问题?

SQL语句问题,查询时间字段与上条数据间隔小于10分钟的数据

mysql如何查询时间间隔大于5分钟的数据(时间从现在往前推)

以 30 分钟的时间间隔计算一天的用户数 oracle

oracle数据库用了定时器查询数据库,每一分钟查询一次,一段时间后导致数据库最大连接数太大