数据库记录是这样子的
数据库每天都会插入24条记录(每隔一小时一条)
2011-08-27 15:03
2011-08-27 16:03
2011-08-27 17:03
2011-08-27 18:032011-08-28 15:03
2011-08-28 16:03
2011-08-28 17:03
2011-08-28 18:03
我需要查询出过去10天的 所有6点钟的记录 该怎么写sql语句呢,请sql高手帮忙下

解决方案 »

  1.   

    SELECT * FROM table WHERE to_char(日期,'hh24miss')='180000' and to_char(日期,'yyyymmdd') between to_char(sysdate-10,'yyyymmdd') 
    and to_char(sysdate,'yyyymmdd'); 写的一般,但是大概是这个意思,呵呵~~
      

  2.   

    to_char(日期,'hh24miss')='180000' 改为 to_char(日期,'hh24')='18' 每小时不一定就是准点插入数据的
      

  3.   

    用WHERE  EXTRACT(HOUR FROM 时间字段)=6 或者楼上的TO_CHAR()感觉EXTRACT效率高点,而且返回是类型是整型,顺便问下:所有6点钟的记录?下午》?从表达上来说是上午
      

  4.   

    忘记说了,你是字段如果是DATE类型的话,要转换为TIMESTAMP,如下
    WHERE EXTRACT(HOUR   FROM   TIMESTAMP  日期字段)=6
      

  5.   

    谢谢 qwe010xx opps_zhou java3344520
    问题解决了,只是对oracle时间函数了解的还不多,所以处理起来还是很麻烦
      

  6.   


    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'