是因为
SQL> select (to_date('2003-06-02 00:05:00', 'yyyy-mm-dd hh24:mi:ss') - trunc(sysdate, 'dd'))
  2  from dual
  3  /(TO_DATE('2003-06-0200:05:00'
-----------------------------
                   .003472222
(to_date('2003-06-02 00:05:00', 'yyyy-mm-dd hh24:mi:ss') - trunc(sysdate, 'dd')) 的值是0.003472222,trunc后等于0,0*288=0。

解决方案 »

  1.   

    Sorry,是因为
    SQL> select .003472222*288 from dual;.003472222*288
    --------------
        .999999936trunc函数的意思是取整数部分,而不会四舍五入,所以
    SQL> select trunc(.003472222*288) from dual;TRUNC(.003472222*288)
    ---------------------
                        0
      

  2.   

    我的情况是这样的:
    我有一张表,有一个fdt的字段
    我要统计每5分钟的情况:[00:00:00,00:00:05)为第一个间隔,[5,10)为第二个间隔
    表有好几十万条记录,但是又不能建索引
    我想用一个select语句搞定,
    所以只能出次下策
    group by trunc((fdt-:day)*1440/5)+1
    :day为某天的开始时间但是存在上诉问题,不知道有没有别的高招
      

  3.   

    请参考:
    SQL> select trunc(0.99) from dual;TRUNC(0.99)
    -----------
              0SQL> select 0.99 from dual;      0.99
    ----------
           .99
      

  4.   

    参考相关函数:
    round(value,[scale])
    floor(value)
    cell(value)
      

  5.   

    group by trunc((fdt-:day)*1440/5)+1
    不知道你是不是想四舍五入,也就是你希望trunc(...)之后的结果为1,而不是零是吗?
    可以
    group by trunc((fdt-:day)*1440/5 + 0.5)+1
    或者
    group by ceil((fdt-:day)*1440/5)+1
      

  6.   

    http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a85397/function.htm#80101有详细说明两面个函数区别
      

  7.   

    to beckhambobo:
    记得斑竹以前贴用过,该网站现打不开,再贴一次吧。