sql >> Databasteknik >  >> RDS >> Sqlserver

Datumintervall som ligger mellan två datum i en LINQ-fråga

Jag är inte 100% tydlig med dina krav. I din inledande rad bad du om poster "där inmatningsdatumintervallet ligger mellan två datumfält", men på raden "Ytterligare" antyder du att du inte vill returnera poster där startdatumet för mötet inte är lika slutdatumet för din inmatning. Jag ser det som två olika krav, så jag ger dig två olika frågor.

Den första frågan är:

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

Den andra frågan är:

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

Den första frågan returnerar poster som "innehåller" inmatningsdatumen.

Den andra frågan returnerar poster som "överlappar" inmatningsdatumen.

Jag tycker att det är mer meningsfullt att du vill ha överlappningsfrågan och den här kommer att uppfylla ditt krav "14:00 - 15:00 returnerar inte ett värde för 15:00-16:00".

Låt mig veta om jag har gjort ett misstag när jag förstår dina krav och behöver göra några ändringar.



  1. Hur lagrar du datum i MySQL-databas?

  2. SQL Server Oanvänd Index

  3. Hur kan jag lista ALLA bidrag som en användare fått?

  4. Hur man byter namn på en Oracle-procedur