Получение последнего дня предыдущего месяца в функции Oracle - PullRequest
6 голосов
/ 10 февраля 2011

Мне нужна функция в Oracle, как это.

Когда я даю параметру простую дату. Тогда функция должна получить меня в последний день предыдущего месяца.

Пример:

FunctionName(10.02.2011) Result should be 31.01.2011

FunctionName(21.03.2011) Result should be 28.02.2011

FunctionName(31.07.2011) Result should be 30.06.2011 (Even date is last day of month)

Как я могу это сделать? Кстати, я никогда не использую Oracle.

Ответы [ 4 ]

28 голосов
/ 10 февраля 2011
SELECT LAST_DAY(ADD_MONTHS(yourdate,-1))
8 голосов
/ 10 февраля 2011

В качестве альтернативы другим ответам здесь, вы также можете найти последний день предыдущего месяца, получив день до первого дня этого месяца

SELECT trunc(your_date, 'MM')-1 as new_date from your_table

Я, вероятно, все еще рекомендую использовать last_day(add_months(xxx,-1)) но просто показываю альтернативу.

3 голосов
/ 10 февраля 2011

select LAST_DAY(ADD_MONTHS(sysdate, -1)) from dual;

форматируйте полученную дату, как вам нравится (я оставлю ее для вас;)

0 голосов
/ 14 сентября 2018

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

SELECT (trunc(LAST_DAY(ADD_MONTHS(sysdate,-1)), 'iw') + 4) from dual
...