我想实现的功能是:查询每日01-08,08-16,16-24点时间段
我想先求出日期然后加小时数再比较
select to_date(to_char(sysdate,'yyyymmdd')||'01','yyyy-mm-dd-hh24') from dual
这个的结果是 30-5月 -08 
我想查到的结果是 30-5月-08 01(01是小时数)
不知道我表达的大家能看明白不?
就是想取小时。
请高手指点一下!帮下个SQL语句。
先谢谢了。在线等!30分感谢~~~

解决方案 »

  1.   

    你这个很简单
    select trunc(to_number(to_char(sysdate,'hh24'))/3) from dual
    出来0就是0-7:59
    1就是8-15:59
    2就16:-23:59
      

  2.   

    SELECT TO_CHAR(SYSDATE, 'hh24') FROM DUAL
      

  3.   

    你要分组查询的话就这样select trunc(to_number(to_char(sysdate,'hh24'))/3),sum(统计数据)
     from 表名
     group by  trunc(to_number(to_char(sysdate,'hh24'))/3)
      

  4.   

    看来我没表达明白
    我数据库里的数据是每小时一条。
    我查询时是查询的天数,每8小时走一个汇总。
    我现在就是想写汇总那条记录的WHERE条件
    查询输入的就是个日期,比如:2008-5-30
    我要根据这个日期取出他0-7:59 ,8-15:59 ,16:-23:59。三个时间段的汇总。
    所以汇总那条记录要有个时间段的查询条件。
    就是请问这个WHERE条件怎么写?
      

  5.   

    那就
    where trunc(to_number(to_char(sysdate,'hh24'))/3)=0就是0-7:59的啊trunc(to_number(to_char(sysdate,'hh24'))/3)=1  就是8-15:59
      

  6.   

    SQL> select to_char(trunc(sysdate)+interval '1' hour,'yyyy-mm-dd hh24') from dua
    l;TO_CHAR(TRUNC
    -------------
    2008-05-30 01
      

  7.   

    SUM(CASE
       WHEN TO_CHAR(DATE, 'hh24') BETWEEN '01' AND '07' THEN
        统计数据 ELSE 0
    END),
    SUM(CASE
       WHEN TO_CHAR(DATE, 'hh24') BETWEEN '08' AND '15' THEN
        统计数据 ELSE 0
    END),
    SUM(CASE
       WHEN TO_CHAR(DATE, 'hh24') BETWEEN '06' AND '24' THEN
        统计数据 ELSE 0
    END)
    要不就这样,但是不是按照你的那个分组
      

  8.   

    问题已经解决
    感谢各位的帮忙
    特别是hebo2005
    已经帮我两次了
    嘿嘿!