如何获取一个时间范围内跨越的天数?大概是这样的需求:比如 今天晚上23点,到后天早上1点。
虽然经历了1+24+1=26小时,但也算3天。
环境是Oracle里的。谢谢。

解决方案 »

  1.   

    select trunc(startdate)-trunc(enddate)+1 from dual
      

  2.   

    临界点的问题怎么解决.
    如果不考虑临界点的话,可以使用 trunc(date1)-trunc(date2)+1
      

  3.   

    比如如果date1是某天的23:59:59,这天算不算?
    date2是某天的0:0:0,那date2这天算不算?
      

  4.   


    select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')))  sasiday FROM DUAL;
    ---------------------------------------------------------------
    2
      

  5.   

    楼主可以参考这个代码,可能需要根据你的环境在修改下:
    select ceil(time1/24)+ceil(time2/24)+ceil(time3/24)
    from dual
    提示这的time1/2/3的允许值为0-23
      

  6.   


    --只需将你最小的那个日期截取到天,再转换成日期像减,如:
    SELECT Ceil( --向上取整
            Abs(
                To_Date(To_Char(
                    To_Date('2010-11-17 23:00:00','yyyy-mm-dd hh24:mi:ss')
                    ,'yyyy-mm-dd') --截取到天
                ,'yyyy-mm-dd') --再转成时间
               -   --两日期想减
               To_Date('2010-11-19 01:00:00','yyyy-mm-dd hh24:mi:ss')))
    FROM dual;--结果: 3