oracle查询当前时间点最近的数据

zhaohetian 2012-02-10 05:59:46
oracle查询当前时间点最近的数据

例如:2011-02-10 13:20:34 左右的数据
...全文
2137 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
争取今天 2012-02-16
  • 打赏
  • 举报
回复
当前时间只有前,没有后. 只有过去时间点才有后.

1表示一天,24小时,5分钟就是1/288
select * from tab_test
where col10 >= sysdate - 1/288
and col10 <= sysdate
zhaohetian 2012-02-15
  • 打赏
  • 举报
回复
查询当前时间(sysdate)前后5分钟内的数据。
zhaohetian 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fudaliang1999 的回复:]
你要的是某个表在2011-02-10 13:20:34 时间表内的数据?
还是某个表内时间字段在2011-02-10 13:20:34 附近的数据.
如果是第一种 ,oracle 提高flash query.就是9楼那样.
如果是第二种情况,就是查询表内的数据
[/Quote]
是第二种情况 需要代码
争取今天 2012-02-14
  • 打赏
  • 举报
回复
是第二种情况,首先你的表结构中一定要有一个时间字段,该字段表示这条记录产生的时间.
其次,你要查询某个时间点附近的数据,电脑并不理解"附近"的意义,因此你要明确"附近"指的是1分钟内还是5分钟内的数据(或者更长) .
对于过去某个时间点,"附件" 有包含时间点前的数据和时间点后的数据.

假设你要查询当前时间点30分钟内的数据.
create table tab_test(col1 varchar2,
....
col10 date)
-- 下面语句查出当前时间(sysdate)前后半小时内的数据。
select * from tab_test
where col10 >= sysdate - 1/48
and col10 <= sysdate
singzero 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mancersterbq 的回复:]

select * from tb as of timestamp sysdate-1;
[/Quote]

用这个方式可以看到之前的数据
争取今天 2012-02-13
  • 打赏
  • 举报
回复
create table tab_test(col1 varchar2,
....
col10 date)
-- 下面语句查出当前时间(sysdate)前后半小时内的数据。
select * from tab_test
where col10 >= sysdate - 1/48
and col10 <= sysdate - 1/48
mancersterbq 2012-02-13
  • 打赏
  • 举报
回复
select * from tb as of timestamp sysdate-1;
ICE-word 2012-02-13
  • 打赏
  • 举报
回复
你查询的数据表是否有时间这个字段。。如果有的话,以时间字段来查询就可以了。。
zhang6793645 2012-02-13
  • 打赏
  • 举报
回复
select sysdate from dual;查询当前时间
select sysdate+1/48 from dual;查询后半个小时的时间
select sysdate+1/24 from dual:查询后一个小时的时间

你可以根据上述规律,做你想看到的时间
Rotel-刘志东 2012-02-13
  • 打赏
  • 举报
回复
如果为指定时间-某个日期,取出最小的不就可以了。
Rotel-刘志东 2012-02-13
  • 打赏
  • 举报
回复
sysdate()
  • 打赏
  • 举报
回复
查询这个时间的上下条数据的时间差 判断差值 小的就是最近的
zhaohetian 2012-02-13
  • 打赏
  • 举报
回复
帮帮忙,发下代码
争取今天 2012-02-13
  • 打赏
  • 举报
回复
你要的是某个表在2011-02-10 13:20:34 时间表内的数据?
还是某个表内时间字段在2011-02-10 13:20:34 附近的数据.
如果是第一种 ,oracle 提高flash query.就是9楼那样.
如果是第二种情况,就是查询表内的数据
zhaohetian 2012-02-13
  • 打赏
  • 举报
回复
貌似不对啊,把2011-02-10 13:20:34带到里面就不对了
notebook800 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mancersterbq 的回复:]

select * from tb as of timestamp sysdate-1;
[/Quote]

9楼正解,牛比,佩服.
mingchaoyan 2012-02-10
  • 打赏
  • 举报
回复
我不知道 oracle 有没有在插入一条记录时 同时记录当前时间;
但lz若在设计表结构时有个插入时间字段,那么这个问题应该不难解决
暴龙神 2012-02-10
  • 打赏
  • 举报
回复
你插入数据时记录时间了么,以前还真没有见过这样查数据的??

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧