Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zakres dat przypadający między dwiema datami w zapytaniu LINQ

Twoje wymagania nie są w 100% jasne. W wierszu otwierającym poprosiłeś o rekordy „w których zakres dat wejściowych mieści się między dwoma polami dat”, ale w wierszu „Dodatkowo” sugerujesz, że nie chcesz zwracać rekordów, w których data rozpoczęcia spotkania nie jest równa data zakończenia Twojego wpisu. Uważam, że są to dwa różne wymagania, więc dam ci dwa różne zapytania.

Pierwsze zapytanie to:

    from t1 in db.Appointments
    where date1 >= t1.AppointmentStart
    where date2 <= t1.AppointmentEnd
    select t1;

Drugie zapytanie to:

    from t1 in db.Appointments
    where date2 > t1.AppointmentStart
    where date1 < t1.AppointmentEnd
    select t1;

Pierwsze zapytanie zwraca rekordy, które "zawierają" daty wejściowe.

Drugie zapytanie zwraca rekordy, które „nakładają się” na daty wprowadzenia.

Myślę, że bardziej sensowne jest, jeśli chcesz, aby zapytanie nakładało się, a to spełni Twoje wymaganie „14:00 - 15:00 nie zwraca wartości dla 15:00-16:00”.

Daj mi znać, jeśli popełniłem błąd, rozumiejąc Twoje wymagania i muszę wprowadzić zmiany.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Warunki NULL w SQL Server

  2. Jak mogę zrobić coś takiego:USE @databaseName

  3. Jak zapętlić tylko pliki, które nie istnieją w miejscu docelowym za pomocą pakietu SSIS?

  4. Parowanie wierszy wysyłania i odbierania danych w SQL

  5. Zmień hasło do logowania SQL Server