wystepowanie dat

0

Witam, mam tabele która zawiera id, imie, nazwisko, data poczatkowa, data koncowa. Czy ktos moglby podrzucic pomysl jak napisac zapytanie ktore zwroci mi tylko te rekordy (cale wiersze) gdzie wystepuje jakas konkretna data? Np. jezeli mam rekordy:

  • 1 , Jan, Nowak, 2019-05-05, 2019-06-01
  • 2, Piotr, Kowal, 2018-09-10, 2019-04-05
  • 3, Janina, Kowalska, 2019-05-29, 2019-09-01

i np konkretna data : 2019-05-30
to zeby zwrociło mi:

  • 1 , Jan, Nowak, 2019-05-05, 2019-06-01
  • 3, Janina, Kowalska, 2019-05-29, 2019-09-01

ponieważ miedzy tymi datami wystepuje ta konkretna.
Ktoś pomoże?

1
select * fro tabela where '2019-05-30' between data_poczatkowa and data_koncowa
0

a jak zrobić powyższy przykład wtedy gdy jest jakiś przedział czasowy podany zamiast konkretnej daty?
mam coś takiego

declare @data as date   
declare @sec_data as date
set @data = '2019-04-30'
set @sec_data = '2019-05-22'
while @data <= @sec_data                       
begin
	
	select * from tabela where @data between data_od and data_do
	
 set @data = DATEADD(D, 1, @data)	 
end

jednak powtarzają się rekordy i wyświetla mi też puste rekordy, jak mogę usunąć puste oraz te które się powtarzają?

0

Nadal pętla jest niepotrzebna, wystarczy alternatywa:

Select * from tabela 
where
 @data between data_poczatkowa and data_koncowa 
Or
 @sec_data between data_poczatkowa and data_koncowa
0

ale zakladajac ze
1 , Jan, Nowak, 2019-05-05, 2019-06-01
2, Piotr, Kowal, 2019-09-10, 2019-04-05
3, Janina, Kowalska, 2019-05-29, 2019-09-01

a
set @data = '2019-01-30'
set @sec_data = '2019-11-22'

to ani @data ani @sec_data nie mieszczą się w przedziałach żadnych pracowników a okres między tymi datami np '2019-05-30' już występuje i wtedy powinno wyświetlić

1 , Jan, Nowak, 2019-05-05, 2019-06-01

a zależy mi żeby sprawdziło okres między dwoma podanymi datami i sprawdziło czy którakolwiek data występuje w którymś rekordzie

da się coś takiego?

1
Select * from tabela 
where
 @data between data_poczatkowa and data_koncowa 
Or
 @sec_data between data_poczatkowa and data_koncowa
Or
Data_poczatkowa between @data and @sec_data
Or
Data_koncowa between @data and @sec_data
2
Select * from tabela 
where
@data<data_koncowa and @sec_data>data_poczatkowa

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