Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Plage de dates comprise entre deux dates dans une requête LINQ

Je ne suis pas sûr à 100% de vos besoins. Dans votre ligne d'ouverture, vous avez demandé des enregistrements "où la plage de dates d'entrée se situe entre deux champs de date", mais dans la ligne "En outre", vous impliquez que vous ne voulez pas renvoyer les enregistrements où la date de début du rendez-vous n'est pas égale la date de fin de votre saisie. Je considère qu'il s'agit de deux exigences différentes, je vais donc vous donner deux requêtes différentes.

La première requête est :

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

La deuxième requête est :

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

La première requête renvoie les enregistrements qui "contiennent" les dates d'entrée.

La deuxième requête renvoie les enregistrements qui "chevauchent" les dates d'entrée.

Je pense qu'il est plus logique que vous souhaitiez la requête de chevauchement et celle-ci répondra à votre exigence "14h00 - 15h00 ne renvoie pas de valeur pour 15h00-16h00".

Faites-moi savoir si j'ai fait une erreur dans la compréhension de vos exigences et si j'ai besoin d'apporter des modifications.