oracle как узнать количество месяцев между двумя датами - PullRequest
1 голос
/ 14 апреля 2020

Я пытаюсь выяснить количество месяцев между двумя датами. Дата 1: 20200401 (ГГГГММДД) Дата 2: 20200515 (ГГГГММДД)

Я пробовал следующий запрос

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

Я получил результат 1.451 . но я ожидаю, что результат будет 1,5

1 Ответ

2 голосов
/ 14 апреля 2020

Вот документация:

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 день!) Вы, вероятно, думаете о «датах» как об отдельных лицах, и рассматриваете обе даты как ВКЛЮЧЕНЫ в интервал. Это не то, как работает арифметика даты c; «15 мая 2020 года» означает полночь в НАЧАЛЕ дня, поэтому в расчет НЕ включены 24 часа последней даты, 15 мая 2020 года.

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