2013-12-21 105 views
9

我想獲得兩個提供日期之間的總天數。我試過下面的查詢,但沒有得到確切的不同;最後的日期不包括在內。獲取Oracle中兩個日期之間的天數,包括日期

select (to_date ('15-06-13','dd-MM-yyyy') - to_date('01-02-12','dd-MM-yyyy')) 
    from dual 

這應該返回501天,但它將返回500天。如果我在計算後添加+1,那麼我會得到正確的結果。

我真的需要包括+1還是有一種替代方法來獲得實際結果?

+2

它返回500天,因爲這是區別 :-)。如果你想要它返回1以上的差異,那麼你應該加1,是的。 – Ben

+0

@Ben:我會說它沒有添加結束日期(即15-06-13)或開始日期(01-02-12)。我不想添加一天。請參閱此鏈接http://www.timeanddate.com/date/durationresult.html?d1=1&m1=2&y1=2012&d2=15&m2=6&y2=2013&ti=on – user968441

+2

鏈接顯示_「在計算中包含結束日期(已添加1天)「_;它明確地告訴你,1天將被添加。這並不是減法的默認行爲,10-4是6,而不是5.如果你想改變默認行爲,你必須手動完成。 – Ben

回答

14

在Oracle中,減少兩個日期返回兩個日期之間的天數。
以同樣的方式作爲對數字的minus運營商的工作:

20 - 20 = 0 ===>  2013-05-20 - 2013-05-20 = 0 
25 - 20 = 5 ===>  2013-05-25 - 2013-05-20 = 5 

如果你想包括last numberlast date,您需要添加1:

20 - 20 + 1 = 1 ===>  2013-05-20 - 2013-05-20 + 1 = 1 
25 - 20 + 1 = 6 ===>  2013-05-25 - 2013-05-20 + 1 = 6 
相關問題