Temat: [Sybase] Ostatni bądź pierwszy dzień poprzedniego i...

Witam,
Na bazie Oracle'a nie mam z tym najmniejszych problemów:

SELECT
Trunc(SYSDATE,'month') pierwszy_dzien_mies,
Add_Months(Trunc(SYSDATE,'month'),-1) pierwszy_dzien_poprz_mies
FROM dual

nie wiem jak to zrobić w Sybase:

Poniższe zapytanie zwraca ostatni dzień poprzedniego miesiąca, ale nie potrafię tego przyciąć do pełnych dni, najbardziej potrzebowałbym pierwszy dzień bieżącego i poprzedniego miesiąca.

select dateadd(mm,0,dateadd(dd,-day(getdate()),getdate()))Ten post został edytowany przez Autora dnia 15.10.15 o godzinie 15:53

Temat: [Sybase] Ostatni bądź pierwszy dzień poprzedniego i...

Udało mi się to w końcu zrobić:

poniższe zapytanie zwraca pierwszy dzień miesiąca, w tym wypadku -1, czyli pierwszy dzień poprzedniego miesiąca

select dateadd(mm, -1, CAST(cast(Year(getdate()) as text)+(case when Month(getdate())<10 then '0'+cast(Month(getdate()) as text) else cast(Month(getdate()) as text) end)+'01' AS DATE ))


Konstrukcja jest dość długa i mało czytelna, więc zrobiłem funkcję PierwszyDzienMiesiaca()

gdzie parametrem jest offset - to o ile miesięcy zmieniamy obecny miesiąc


ALTER FUNCTION "PierwszyDzienMiesiaca"(in offset integer)
returns date
--
--
begin
declare first_day_of_month date;
--declare offset number;
select dateadd(mm, offset, CAST(cast(Year(getdate()) as text)+(case when Month(getdate())<10 then '0'+cast(Month(getdate()) as text) else cast(Month(getdate()) as text) end)+'01' AS DATE )) into first_day_of_month; return first_day_of_month;
end



Wyślij zaproszenie do