select trunc((sysdate-trunc(sysdate))*24*60/30) from dual;结果为什么是25 呢 先运算(sysdate-trunc(sysdate)吗 这个也应该是0呢sele ct trunc(sysdate-trunc(sysdate)) from dual 结果是0呢在具体将将 trunc的用法 和用途 谢谢

解决方案 »

  1.   

    SELECT TRUNC ((SYSDATE - TRUNC (SYSDATE)) * 24 * 60 / 30) A,--从零时零分零秒到现在的半小时数(精确到各位,小数点后的全部去掉)
           (SYSDATE - TRUNC (SYSDATE)) * 24 * 60 / 30 B,--从零时零分零秒到现在的半小时数(几个半小时)
            (SYSDATE - TRUNC (SYSDATE)) C,--从零时零分零秒到现在的天数(小于1)
            TRUNC (SYSDATE) D,--系统时间,精确到天,即今天的零时零分零秒
            SYSDATE E--系统时间,精确到时分秒
      FROM DUAL;
      

  2.   

    trunc 对数值类型的话,就是直接舍去小数部分
    sysdate-trunc(sysdate) 这个的结果是一个比 1 小的值(两个日期类型想减得到的是两个日期之间相差的天数) 你对这个结果 trunc 结果就为 0 
      

  3.   

    TRUNC 实际上就是取整函数,如果是数字,仅取整数部分的值,不进行四舍五入;如果是日期,则仅取年月日部分!