我正试图找出两个日期之间的许多飞蛾。 日期1:20200401(YYYYMMDD) 日期2:20200515(YYYYMMDD)
我尝试了以下查询
SELECT MONTHS_BETWEEN( TO_DATE ('20200515', 'YYYYMMDD'),
TO_DATE ('20200401', 'YYYYMMDD') ) month
FROM dual;
我得到了结果 1.451 。但我希望结果是1.5
答案 0 :(得分:2)
以下是文档:
请注意功能说明。除非每月的同一天或两个日期都是月末日期,否则将进行计算,就好像每个月都有31天!
所以,在您的情况下,结果是1 + 14/31 = 1.45161 ....
无论如何,您的示例显示1个月零14天;不清楚您为什么会期望1.5-即使您期望计算假设每个月都有30天。 (可能有31天!)您可能将“日期”视为单个实体,并将两个日期都视为间隔中的“包含”。这不是日期算术的工作原理。 “ 2020年5月15日”是指当天开始的午夜,因此计算不包括最后日期2020年5月15日的24小时。