我正在使用MONTHS_BETWEEN函数来获取2个日期之间的差异,但结果不是100%正确我认为此函数开采1天。 我试过这个SQL
SELECT MONTHS_BETWEEN(TO_DATE('20170630','YYYYMMDD'),
TO_DATE('20170501','YYYYMMDD') ) "Months"
FROM DUAL;
在这种情况下,它应该返回2
,但结果是1.93548387096774
那么,任何帮助?或者有没有办法再增加1天?
答案 0 :(得分:0)
尝试
SELECT ROUND( MONTHS_BETWEEN(
TO_DATE('20170630','YYYYMMDD'),
TO_DATE('20170501','YYYYMMDD')))
"Months" FROM DUAL;
如果天数不同并且它们都不指定月份的最后一天,则 MONTHS_BETWEEN
返回小数结果。有关详细信息,请参阅http://www.sqlines.com/oracle/functions/months_between
答案 1 :(得分:0)
之间的月份将给出相对于整月的小数值。因此,从1st Jan
到1st Feb
,您将获得1
。但是从1st Jan
到31st Jan
,您将无法获得准确的1
。它将是0.9...
。同样地,从31st Jan
到28th Feb
(非闰年),您将获得1.
因此,您将从2
到1st May
或从1st July
到30th April
获得30th June
,
从1st May
到30th June
,您永远不会得到确切的2。
如果您想要完全2
,请将1
天添加到更长日期或从start_date减去1天。
的 DBFiddle Demo
强>