MS SQL Filtrowanie danych na podstawie dat.

0

Hej,
Mając w tabeli X 3 kolumny np. NazwaUmowy, DataOd, DataDo mam za zadanie wyświetlić umowy których zakres obowiązywania mieści się w parametrach DataOd, DataDo.

Na początku przychodzi na myśli oczywiście prosty filtr poprzez select .NazwaUmowy from X where DataOd >= '2017-10-01 'and DataDo <= ''2018-03-31'.
Jednak załóżmy, że jedna umowa zawiera dane:
DataOd | DataDo
2017-06-01 | 2017-10-21
Czyli jeżeli chcę wyświetlić dane: DataOd >= '2017-10-01 'and DataDo <= ''2018-03-31'. to nie pokaże mi tej umowy., ponieważ okres jej obowiązywania jest od 2017-06-01.
Wynik mojego działania ma zwracać dane nawet w przypadku, gdy umowa obowiązywała NAWET przez jeden dzień danego miesiąca, więc skoro umowa obowiązuje do 2017-10-21 to zapytanie powinno mi zwrócić październik.
Proszę o pomoc i wskazówki jak powinno wyglądać działanie.

0

Ja bym w where w tym prostym selecie zrobiła (select to_char(dataDo, 'MM') from tabela) i tyle.

0
kate87 napisał(a):

Ja bym w where w tym prostym selecie zrobiła (select to_char(dataDo, 'MM') from tabela) i tyle.

Możesz szerzej wyjaśnić jak miałoby to wyglądać? Bo wydaje mi się, że to co napisałaś jedynie konwertuje wynik.
A ja bym chciał: zakładając, że dana umowa obowiązuje:
DataOd | DataDo
2017-06-01 | 2017-10-21

Chcąć wyświetlić dane( dla parametrów DataOd >= '2017-10-01 'and DataDo <= ''2018-03-31') normalnie stworzyłbym zapytanie select * from tabela where DataOd >= '2017-10-01 'and DataDo <= ''2018-03-31'. I to nie pokaże mi tej umowy., ponieważ okres jej obowiązywania jest od 2017-06-01.
Wynik mojego działania ma zwracać dane nawet w przypadku, gdy umowa obowiązywała przez jeden dzień danego miesiąca, więc skoro umowa obowiązuje do 2017-10-21 to zapytanie powinno mi zwrócić tylko październik.

1

Data i czas Ogólnie 'MM' zwraca numer miesiąca z daty. Dlatego pokaże Ci wszystko co ma dokładnie ten numer miesiąca.

1

Myślę, że chodzi ci o daty "na krzyż":
http://sqlfiddle.com/#!18/15687/3

0
Marcin.Miga napisał(a):

Myślę, że chodzi ci o daty "na krzyż":
http://sqlfiddle.com/#!18/15687/3

Hehe zadziałało dzięki! Jeszcze chciałbym doprecyzować - bo w tym przypadku wyciągam * czyli wszystkie dane, natomiast chciałbym wyjąć kolumnę tylko z tym miesiącem , który mi znalazło zapytanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1