kombinowalem tak:
select (add_months(to_date(sysdate), -1)) from dual
moze ktoś ma jakieś lepszy pomysl?
temat stary jak swiat ale dzis po dluzszej przerwie dopiero dotarlem na forum.
rozumiecie wszedzie korki

a to moze sie komus przyda:
CREATE OR REPLACE FUNCTION "LORLIK"."DATA_KONCOWA_MIESIACA" RETURN date IS dzien NUMBER; v_wstecz CONSTANT NUMBER := 10; v_last_day date; BEGIN SELECT TO_CHAR (SYSDATE, 'DD') INTO dzien FROM DUAL; IF dzien > v_wstecz THEN SELECT LAST_DAY(add_months(to_date(sysdate), -1)) INTO v_last_day FROM dual; else SELECT LAST_DAY(add_months(to_date(sysdate), -2)) INTO v_last_day FROM dual; END IF; RETURN v_last_day; END; --- i druga /* (Formatter Plus v4.8.5) */ CREATE OR REPLACE FUNCTION "LORLIK"."DATA_POCZ_MIESIACA" RETURN DATE IS dzien NUMBER; v_wstecz CONSTANT NUMBER := 10; v_first_day DATE; --v_parse date; BEGIN --by wiedziec czy month-1 czy month-2 SELECT TO_CHAR (SYSDATE, 'DD') INTO dzien FROM DUAL; IF dzien > v_wstecz THEN SELECT to_date('01'||to_char((add_months(to_date(sysdate), -1)),'mmyyyy'),'ddmmyyyy') INTO v_first_day FROM dual; else SELECT to_date('01'||to_char((add_months(to_date(sysdate), -2)),'mmyyyy'),'ddmmyyyy') INTO v_first_day FROM dual; END IF; --v_parse := TO_DATE(v_first_day,'ddmmyyyy'); RETURN v_first_day; END;
a te n const to po to by bral po 10 jak sie koncyz okres rozliczeniowy
pozdrawiam