Paweł Łaguna

Paweł Łaguna ERP
Administrator/SQL
development

Temat: Wyświetlanie poszczególnych miesięcy z zakresu dat T-SQL.

Hej, mam następujący problem. Mam dwie kolumny DateFrom oraz DateTo. Załóżmy, że pierwszy wiersz to zakres:

DateFrom | DateTo
2017-06-01 00:00:00.000 | 2017-09-30 00:00:00.000

Czyli od 1 czerwca 2017 roku do 30 września 2017. Jak widać powyższy zakres mieści 4 miesiące (czerwiec, lipiec, sierpień, wrzesień). Zapytanie powinno mi zwrócić wynik wyświetlający poszczególne miesiące znajdujące się w tym zakresie tzn.:

Kolumna1
2017-06
2017-07
2017-08
2017-09

Bardzo proszę o pomoc.
Krzysztof Wojtal

Krzysztof Wojtal Specjalista ds
systemu ERP, PL/SQL,
Crystal rep., Power
B...

Temat: Wyświetlanie poszczególnych miesięcy z zakresu dat T-SQL.

Cześć,

Nie znam się na T-SQL, bo na co dzień pracuję z bazami Oracle. Ja takie problemy rozwiązuję poprzez funkcję (IAL), którą sobie napisałem, do której przekazuję liczbę, a ona zwraca mi odpowiednią ilość wierszy:
1
2
3
4
...

Wykorzystuję ją również i do dat badają dzień po dniu.
Ty aby uzyskać odpowiedni wynik liczbowy powinieneś od okresu DO (2018-02-28) odjąć okres OD (2017-11-01) i na końcu dodać 1 w ten sposób:
Wyciągasz rok i mnożysz przez 12 i dodajesz miesiące
(((2018 * 12) + 2) - ((2018 * 12) + 11) )+ 1 == ((24216 + 2) - (24204 + 11)) + 1 == (24218 -24215) + 1 == 3 + 1 daje wynik 4.
Jeżeli jesteś w stanie napisać sobie taką funkcję, to na podstawie jej wyników musisz do okresu OD dodawać po kolei miesiące. W oraclu jest funkcja AddMonths(pierwszy parametr to data, drugi ilość miesięcy), a w T-SQL jest taka DateAdd(Month,1,Data):
dla wartości 1 = CONVERT(NVARCHAR(7),DateAdd(Month,Funkcja.R_Ilosc - 1,2017-11-01),120) = 2017-11
dla wartości 2 = CONVERT(NVARCHAR(7),DateAdd(Month,Funkcja.R_Ilosc - 1,2017-11-01),120) = 2017-12
dla wartości 3 = CONVERT(NVARCHAR(7),DateAdd(Month,Funkcja.R_Ilosc - 1,2017-11-01),120) = 2018-01
dla wartości 4 = CONVERT(NVARCHAR(7),DateAdd(Month,Funkcja.R_Ilosc - 1,2017-11-01),120) = 2018-02

Mam nadzieję, że udało mi się Ci pomóc.

Pozdrawiam
Krzysiek.
Paweł Łaguna

Paweł Łaguna ERP
Administrator/SQL
development

Temat: Wyświetlanie poszczególnych miesięcy z zakresu dat T-SQL.

Napisałem sobie funkcję, która mi rozbija zakres dwóch argumentów z datami :) Dzięki za pomoc.

Następna dyskusja:

[Oracle] Generowanie dat mi...




Wyślij zaproszenie do