2011-02-10 2 views
6

Мне нужна функция в Oracle вот так.Получение последнего дня предыдущего месяца в функции 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.

ответ

26
SELECT LAST_DAY(ADD_MONTHS(yourdate,-1)) 
+2

Эти функции были частью стандартного Oracle в течение нескольких десятилетий. – APC

+1

@ APC о, приятно знать :). Я на самом деле новичок в Oracle. – Lamak

2

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

формат дата в результате, как вам нравится (я оставлю это для вас;)

7

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

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

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

Смежные вопросы