Округление до ближайшего месяца в Oracle DB - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь округлить вверх до ближайшего месяца.Пока у меня есть:

SELECT ROUND(CURRENT_DATE, 'MM') FROM DUAL

, который округляет до ближайшего месяца, который в данном случае идет вверх.На момент публикации, вывод 03/01/2019 в формате MM/DD/YYYY.

Но что, если это, например, первое число месяца?

SELECT ROUND(TO_DATE('01-03-19','DD-MM-YY'), 'MM') FROM DUAL

Это выдает тот же результат, что и выше.Но я ожидаю 04/01/2019.

Я мог бы сделать что-то вроде:

SELECT TRUNC(ADD_MONTHS(TO_DATE('30-03-19','DD-MM-YY'),1), 'MM') - 1 FROM DUAL

, который произвел на выходе 03/31/2019, что соответствует ожиданиям.

Я беру 30 марта, добавляю на него один месяц.Обрежьте это, чтобы получить первый день в этом месяце, а затем просто вычтите один за последний день предыдущего месяца.

Теперь это работает, но кажется длинным и утомительным.Конечно, есть лучший способ?

1 Ответ

0 голосов
/ 22 февраля 2019

, если вы пытаетесь найти последний день текущего месяца

LAST_DAY(SYSDATE)

, если вы пытаетесь найти первый день следующего месяца

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