sql >> Base de Datos >  >> RDS >> Sqlserver

Intervalo de fechas que se encuentra entre dos fechas en una consulta LINQ

No estoy 100% claro en sus requisitos. En su línea de apertura, solicitó registros "donde el rango de fechas de entrada se encuentra entre dos campos de fecha", pero en la línea "Además", implica que no desea devolver registros donde la fecha de inicio de la cita no es igual la fecha de finalización de su entrada. Considero que estos son dos requisitos diferentes, por lo que le daré dos consultas diferentes.

La primera consulta es:

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

La segunda consulta es:

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

La primera consulta devuelve registros que "contienen" las fechas de entrada.

La segunda consulta devuelve registros que "superponen" las fechas de entrada.

Creo que tiene más sentido que desee la consulta superpuesta y esta cumplirá con su requisito "14:00 - 15:00 no devuelve un valor para 15:00-16:00".

Avíseme si cometí un error al comprender sus requisitos y necesito hacer algún cambio.