获取Oracle中两个日期之间的天数,包括日期
Posted
技术标签:
【中文标题】获取Oracle中两个日期之间的天数,包括日期【英文标题】:Get the number of days between two dates in Oracle, inclusive of the dates 【发布时间】:2014-01-10 08:46:54 【问题描述】:我想获取两个提供日期之间的总天数。我尝试了以下查询,但没有得到完全不同的结果;不包括最后日期。
select (to_date ('15-06-13','dd-MM-yyyy') - to_date('01-02-12','dd-MM-yyyy'))
from dual
这应该返回 501 天,但实际上返回的是 500 天。如果我在计算后加上 +1,那么我得到的结果是正确的。
我真的需要包含 +1 还是有其他方法来获得实际结果?
【问题讨论】:
返回 500 天,因为这就是区别 :-)。如果你希望它返回比差值多 1,那么你应该加 1,是的。 @Ben:我想说它没有添加结束日期(即 15-06-13)或开始日期(01-02-12)。我不想增加一天。参考这个链接timeanddate.com/date/… 链接显示“在计算中包括结束日期(添加1天)”;它明确告诉您将添加 1 天。这不是减法的默认行为来执行您的要求,10 - 4 是 6,而不是 5。如果您想更改默认行为,则必须手动进行。 【参考方案1】:在 Oracle 中,减去两个日期会返回两个日期之间的天数。minus
运算符的工作方式与数字相同:
20 - 20 = 0 ===> 2013-05-20 - 2013-05-20 = 0
25 - 20 = 5 ===> 2013-05-25 - 2013-05-20 = 5
如果要包含last number
或last 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
【讨论】:
以上是关于获取Oracle中两个日期之间的天数,包括日期的主要内容,如果未能解决你的问题,请参考以下文章