oracle查询间隔时间的记录

精神病281号 2011-10-21 10:52:39
数据库记录是这样子的
数据库每天都会插入24条记录(每隔一小时一条)
2011-08-27 15:03
2011-08-27 16:03
2011-08-27 17:03
2011-08-27 18:03

2011-08-28 15:03
2011-08-28 16:03
2011-08-28 17:03
2011-08-28 18:03


我需要查询出过去10天的 所有6点钟的记录 该怎么写sql语句呢,请sql高手帮忙下
...全文
300 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2011-10-21
  • 打赏
  • 举报
回复
忘记说了,你是字段如果是DATE类型的话,要转换为TIMESTAMP,如下
WHERE EXTRACT(HOUR FROM TIMESTAMP 日期字段)=6
iqlife 2011-10-21
  • 打赏
  • 举报
回复
用WHERE EXTRACT(HOUR FROM 时间字段)=6 或者楼上的TO_CHAR()感觉EXTRACT效率高点,而且返回是类型是整型,

顺便问下:所有6点钟的记录?下午》?从表达上来说是上午
opps_zhou 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qwe010xx 的回复:]

SELECT * FROM table WHERE to_char(日期,'hh24miss')='180000' and to_char(日期,'yyyymmdd') between to_char(sysdate-10,'yyyymmdd')
and to_char(sysdate,'yyyymmdd');

写的一般,但是大概是这个意思,呵呵~~
[/Quote]
to_char(日期,'hh24miss')='180000' 改为 to_char(日期,'hh24')='18' 每小时不一定就是准点插入数据的
彗星 2011-10-21
  • 打赏
  • 举报
回复
SELECT * FROM table WHERE to_char(日期,'hh24miss')='180000' and to_char(日期,'yyyymmdd') between to_char(sysdate-10,'yyyymmdd')
and to_char(sysdate,'yyyymmdd');

写的一般,但是大概是这个意思,呵呵~~
304的的哥 2011-10-21
  • 打赏
  • 举报
回复

select trunc(sysdate,'dd')-10+level||' '||to_char(dt_column,'hh24mi'),other_column
from tb
connect by level<=10
where to_char(dt_column,'hh24mi')='1803'
精神病281号 2011-10-21
  • 打赏
  • 举报
回复
谢谢 qwe010xx opps_zhou java3344520
问题解决了,只是对oracle时间函数了解的还不多,所以处理起来还是很麻烦

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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