现有时间点如下,我要以15分钟为一个节点进行归类,一天24小时即有96个节点,该如何归类?
例如:
2010-6-3 上午 03:03:00
2010-6-3 上午 03:43:00
2010-6-3 上午 10:03:00
2010-6-3 上午 10:53:00
应该归为
2010-6-3 上午 03:00:00
2010-6-3 上午 03:30:00
2010-6-3 上午 10:00:00
2010-6-3 上午 10:45:00
如何实现?

解决方案 »

  1.   

    select to_char(sysdate,'mi')/15, sysdate from dual;
    取出来的值为
    2.8 2010-6-3 下午 02:42:59
    怎么得到节点呢
      

  2.   


    select to_char(sysdate,'mi')/15,to_char(sysdate, 'yyyy-mm-dd')||' '||to_char(sysdate, 'HH24')||':'||trunc(to_char(sysdate,'mi')/15)*15||':00',sysdate from dual这样写效率是否最高?
      

  3.   

    例如
    select  extract(HOUR FROM TIMESTAMP '2010-10-10 9:10:10') as 小时,
    extract(MINUTE FROM TIMESTAMP '2010-10-10 9:10:10') as 分钟 ,
    ceil((extract(HOUR FROM TIMESTAMP '2010-10-10 9:10:10')*60+extract(MINUTE FROM TIMESTAMP '2010-10-10 9:10:10'))/15) as 节点 
    from dual;
    结果:
    小时 分钟 节点
    9 10 37
      

  4.   


    select to_char(sysdate, 'yyyymmdd hh24:mi:ss') dt,BASE_TAB.node
    from (
    select 
    to_char(trunc(sysdate) + interval '15' minute * (level - 1),'hh24mi') bt,
    to_char(trunc(sysdate) + interval '15' minute * (level) - interval '1' minute,'hh24mi') et,
    level node
    from dual
    connect by level <= 96
    ) base_tab, dual
    where to_char(sysdate, 'hh24mi') between base_tab.bt and base_tab.etDT                              NODE
    ------------------------- ----------
    20100603 15:12:39                 61
      

  5.   

    select trunc((sysdate-trunc(sysdate))*24*4) from dual
      

  6.   

    要归到某一时间点的话select trunc(sysdate)+trunc((sysdate-trunc(sysdate))*24*4)/24/4 from dual应该是比较快的方法了
      

  7.   


    select sysdate,trunc(sysdate,'hh')+floor(to_char(sysdate,'mi')/15)*15/60/24 from dual;-------------
    2010-6-3 19:54:34 2010-6-3 19:45:00
      

  8.   


    -- 强烈支持,我还没来的及写,你已经写好了,牛皮!
    -- 我也想到了用connect by。 呵呵......
      

  9.   

    Select TO_DATE(TO_CHAR(sysdate,'YYYY-MM-DD HH24:')||TRUNC(to_char(sysdate,'MI')/15)*15,'YYYY-MM-DD HH24:MI') From dual
      

  10.   

    select sysdate, trunc(sysdate,'mi') - mod( to_char(sysdate,'mi'), 15)/24/60 from dual