Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Intervalo de datas entre duas datas em uma consulta LINQ


Não estou 100% claro sobre suas necessidades. Na sua linha de abertura você pediu registros "onde o intervalo de datas de entrada cai entre dois campos de data", mas na linha "Adicionalmente" você implica que não deseja retornar registros em que a data de início do compromisso não seja igual a data de término de sua entrada. Eu considero esses dois requisitos diferentes, então vou dar a você duas consultas diferentes.

A primeira consulta é:
    from t1 in db.Appointments
    where date1 >= t1.AppointmentStart
    where date2 <= t1.AppointmentEnd
    select t1;

A segunda consulta é:
    from t1 in db.Appointments
    where date2 > t1.AppointmentStart
    where date1 < t1.AppointmentEnd
    select t1;

A primeira consulta retorna registros que "contêm" as datas de entrada.

A segunda consulta retorna registros que "sobrepõem" as datas de entrada.

Acho que faz mais sentido que você queira a consulta de sobreposição e esta atenda ao seu requisito "14:00 - 15:00 não retorna um valor para 15:00-16:00".

Avise-me se eu tiver cometido um erro ao entender seus requisitos e precisar fazer alterações.