甲骨文如何查找两个日期之间的月数

时间:2020-04-13 23:42:46

标签: sql oracle

我正试图找出两个日期之间的许多飞蛾。 日期1:20200401(YYYYMMDD) 日期2:20200515(YYYYMMDD)

我尝试了以下查询

SELECT MONTHS_BETWEEN( TO_DATE ('20200515', 'YYYYMMDD'), 
                       TO_DATE ('20200401', 'YYYYMMDD') )  month 
  FROM dual;

我得到了结果 1.451 。但我希望结果是1.5

1 个答案:

答案 0 :(得分:2)

以下是文档:

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/MONTHS_BETWEEN.html#GUID-E4A1AEC0-F5A0-4703-9CC8-4087EB889952

请注意功能说明。除非每月的同一天或两个日期都是月末日期,否则将进行计算,就好像每个月都有31天

所以,在您的情况下,结果是1 + 14/31 = 1.45161 ....

无论如何,您的示例显示1个月零14天;不清楚您为什么会期望1.5-即使您期望计算假设每个月都有30天。 (可能有31天!)您可能将“日期”视为单个实体,并将两个日期都视为间隔中的“包含”。这不是日期算术的工作原理。 “ 2020年5月15日”是指当天开始的午夜,因此计算不包括最后日期2020年5月15日的24小时。

相关问题