sql >> Database >  >> RDS >> Sqlserver

Datumbereik tussen twee datums in een LINQ-query

Ik ben niet 100% duidelijk over uw vereisten. In je openingsregel vroeg je om records "waar de invoerdatum valt tussen twee datumvelden", maar in de regel "Aanvullend" geef je aan dat je geen records wilt retourneren waarvan de startdatum van de afspraak niet gelijk is aan de einddatum van uw invoer. Ik neem aan dat dit twee verschillende vereisten zijn, dus ik geef je twee verschillende vragen.

De eerste vraag is:

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

De tweede vraag is:

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

De eerste query retourneert records die de invoerdatums "bevatten".

De tweede query retourneert records die de invoerdatums "overlappen".

Ik denk dat het logischer is dat u de overlappende zoekopdracht wilt en dat deze voldoet aan uw vereiste "14:00 - 15:00 retourneert geen waarde voor 15:00-16:00".

Laat het me weten als ik een fout heb gemaakt bij het begrijpen van uw vereisten en als ik wijzigingen moet aanbrengen.



  1. Getypte resultaten ophalen uit ActiveRecord onbewerkte SQL

  2. Hoe genereer ik (automatisch) een update-query van een dynamische query?

  3. Identity Entity Framework-bibliotheek - Database bijwerken [MySQL]

  4. De PostgreSQL-systeemcatalogus begrijpen en lezen