Функция Oracle months_between неожиданный результат - PullRequest
0 голосов
/ 27 мая 2019

Функция Oracle months_between возвращает неожиданные результаты.

Например, разница между 20191001 и 20190916 составляет 15 дней, поэтому ожидается, что возвращаемое значение функции будет (1/31) * 15 = 0,4838 ....

SELECT months_between('20191001','20190916')
from dual

.5161290322580645161290322580645161290323

Это спецификация? Или это ошибка?

1 Ответ

1 голос
/ 27 мая 2019

Функция MONTHS_BETWEEN работает с 31-дневными месяцами, когда день месяца не последний день месяца.

SELECT MONTHS_BETWEEN 
  (TO_DATE('20190201','YYYYMMDD'),
   TO_DATE('20190131','YYYYMMDD') ) "Months"
FROM DUAL;

вернет 0.032 (округлено), но

SELECT MONTHS_BETWEEN 
 (TO_DATE('20190301','YYYYMMDD'),
  TO_DATE('20190228','YYYYMMDD') ) "Months"
FROM DUAL;

вернет 0,129

Более подробное описание MONTHS_BETWEN см. В документации

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...