Mam tabelę zdarzeń, która określa zakres dat z polami start_date
i end_date
. Mam inny zakres dat określony w kodzie, który definiuje bieżący tydzień jako "week_start" i "week_end".Jak ustalić, czy zakres dat występuje w dowolnym czasie w innym zakresie dat?
Chciałbym przetestować wszystkie wydarzenia w tym tygodniu. Przypadki wydają się być: zaczyna
- Event i kończy się w ciągu tygodnia
- Event rozpoczyna się przed tygodniem, ale kończy się w ciągu tygodnia
- Event rozpoczyna się w ciągu tygodnia, ale kończy się po tygodniu
- impreza rozpoczyna się przed tygodniem, a także kończy się po tygodniu
- zdarzenia, które nie przebywają wewnątrz, ani zachodzić na tydzień w ogóle są ignorowane
Próbuję wymyślić zapytanie, które może obsłużyć wszystkie te przypadki. Do tej pory udało mi się zdobyć tylko te przypadki, które zajmują tygodniowy okres nakładania się lub zdarzenia, które są w pełni wewnętrzne; Zasadniczo zbyt wiele zapisów lub wcale.
To jest duplikat http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap, który ma rygorystyczne wyprowadzenie prostego (tylko 2 warunki) rozwiązania. –