SELECT ROUND(24*TO_DATE('2006-03-07 08:30:40','YYYY-MM-DD HH23:MI:SS')-TO_DATE('2005-08-01 12:05:06','YYYY-MM-DD HH23:MI:SS')) FROM DUAL

解决方案 »

  1.   

    SELECT ROUND(24*TO_DATE('2006-03-07 08:30:40','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2005-08-01 12:05:06','YYYY-MM-DD HH24:MI:SS')) FROM DUAL
      

  2.   

    SELECT ROUND(24*TO_NUMBER(TO_DATE('2006-03-07 08:30:40','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2005-08-01 12:05:06','YYYY-MM-DD HH24:MI:SS'))) FROM DUAL
      

  3.   

    楼上的方法有问题。
    1楼HH23错误
    2楼缺少括号
    3楼没有考虑小减大的问题?
    另外,有必要ROUND吗?两个时间相减,得出的是间隔的日期数,乘以24即可得出小时数,ROUND得出的是个粗略值。SQL> SELECT 24*ABS(TO_DATE('&DT1','YYYY-MM-DD HH24:MI:SS')-TO_DATE('&DT2','YYYY-MM-DD HH24:MI:SS')) AS INTERVAL FROM DUAL;
    输入 dt1 的值:  2005-06-06
    输入 dt2 的值:  2006-01-06  INTERVAL
    ----------
          5136