【问题标题】:Get the number of days between two dates in Oracle, inclusive of the dates获取Oracle中两个日期之间的天数,包括日期
【发布时间】: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。如果您想更改默认行为,则必须手动进行。

标签: oracle oracle11g date-arithmetic


【解决方案1】:

在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多