sql >> Database teknologi >  >> RDS >> Sqlserver

Datointerval, der falder mellem to datoer i en LINQ-forespørgsel

Jeg er ikke 100% klar over dine krav. I din åbningslinje bad du om poster "hvor inputdatointervallet falder mellem to datofelter", men i linjen "Yderligere" antyder du, at du ikke ønsker at returnere poster, hvor startdatoen for aftalen ikke er lig. slutdatoen for dit input. Jeg opfatter det som to forskellige krav, så jeg vil give dig to forskellige forespørgsler.

Den første forespørgsel er:

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

Den anden forespørgsel er:

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

Den første forespørgsel returnerer poster, der "indeholder" inputdatoer.

Den anden forespørgsel returnerer poster, der "overlapper" inputdatoerne.

Jeg synes, det giver mere mening, at du vil have overlapningsforespørgslen, og denne vil opfylde dit krav "14:00 - 15:00 returnerer ikke en værdi for 15:00-16:00".

Fortæl mig, hvis jeg begik en fejl ved at forstå dine krav og skal foretage ændringer.



  1. Hvad laver en databasedesigner?

  2. Hvordan opretter man indlejret SQL 2008-databasefil, hvis den ikke eksisterer?

  3. MySQL film reservationssystem design del 2

  4. Får fejl under udførelse af SELECT-sætning i Toad for MySQL