Я пытаюсь округлить вверх до ближайшего месяца.Пока у меня есть:
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 марта, добавляю на него один месяц.Обрежьте это, чтобы получить первый день в этом месяце, а затем просто вычтите один за последний день предыдущего месяца.
Теперь это работает, но кажется длинным и утомительным.Конечно, есть лучший способ?