Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: last month
Forum PHP.pl > Forum > Bazy danych > Oracle
Method
a wiec chcialbym uzyskac pierwszy i ostatni dzien ubieglego miesiaca
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 smile.gif

a to moze sie komus przyda:
  1. CREATE OR REPLACE FUNCTION "LORLIK"."DATA_KONCOWA_MIESIACA"
  2. RETURN date IS
  3.  
  4. dzien NUMBER;
  5. v_wstecz CONSTANT NUMBER := 10;
  6. v_last_day date;
  7. BEGIN SELECT TO_CHAR (SYSDATE, 'DD')
  8.  
  9. INTO dzien FROM DUAL; IF dzien > v_wstecz
  10. THEN
  11. SELECT LAST_DAY(add_months(to_date(sysdate), -1))
  12. INTO v_last_day FROM dual; else
  13. SELECT LAST_DAY(add_months(to_date(sysdate), -2))
  14. INTO v_last_day FROM dual; END IF;
  15.  
  16. RETURN v_last_day;
  17. END;
  18.  
  19. --- i druga
  20.  
  21. /* (Formatter Plus v4.8.5) */
  22. CREATE OR REPLACE FUNCTION "LORLIK"."DATA_POCZ_MIESIACA"
  23. RETURN DATE IS
  24.  
  25. dzien NUMBER;
  26. v_wstecz CONSTANT NUMBER := 10;
  27. v_first_day DATE;
  28. --v_parse date;
  29. BEGIN --by wiedziec czy month-1 czy month-2
  30. SELECT TO_CHAR (SYSDATE, 'DD')
  31.  
  32. INTO dzien FROM DUAL; IF dzien > v_wstecz
  33. THEN
  34. SELECT to_date('01'||to_char((add_months(to_date(sysdate), -1)),'mmyyyy'),'ddmmyyyy')
  35. INTO v_first_day FROM dual; else
  36. SELECT to_date('01'||to_char((add_months(to_date(sysdate), -2)),'mmyyyy'),'ddmmyyyy')
  37. INTO v_first_day FROM dual; END IF;
  38. --v_parse := TO_DATE(v_first_day,'ddmmyyyy');
  39. RETURN v_first_day;
  40. END;

a te n const to po to by bral po 10 jak sie koncyz okres rozliczeniowy

pozdrawiam
_Oscar_
pierwszy dzień poprzedniego miesiaca
select TRUNC(SYSDATE,'MM') - TO_YMINTERVAL('00-01') from dual;
ostatni dzień
select last_day(TRUNC(SYSDATE,'MM') - TO_YMINTERVAL('00-01')) from dual;

jak chcesz innych miesiecy poprostu zmieniasz '00-01' na '00-02' <- dwa w tył
Pozdrawiam
OSCAR
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.