Оператор SQL // между датой и временем - PullRequest
0 голосов
/ 10 февраля 2019

У меня следующий запрос:

select s.ScreenID, s.ScreenName, ps.ScheduleDate
from Screens s
left join PerformanceSchedules ps on ps.ScreenID = s.ScreenID
where s.TheatreID = 2 and ((ps.ScheduleDate not between convert(datetime, '2019-08-02 14:00:00.000') and convert(datetime, '2019-08-02 20:00:00.000')) or (ps.ScheduleDate is null))

Результат запроса:

ScreenID    ScreenName  ScheduleDate
4           Screen 1    2019-08-02 15:00:00.000
5           Screen 2    2019-08-02 15:00:00.000
6           Screen 3    NULL

Обычно он должен возвращать только экран 3, а не два других, потому что ScheduleDate ofдва в промежутке времени.

Результат должен быть:

6   Screen 3    NULL

1 Ответ

0 голосов
/ 10 февраля 2019

Я подозреваю, что вы действительно хотите:

select s.ScreenID, s.ScreenName, ps.ScheduleDate
from Screens s left join
     PerformanceSchedules ps
     on ps.ScreenID = s.ScreenID and
        ps.ScheduleDate between convert(datetime, '2019-08-02 14:00:00.000', 121) and convert(datetime, '2019-08-02 20:00:00.000', 121)
where s.TheatreID = 2 and
      ps.ScreenID is null;

Это вернет экраны, у которых нет запланированной даты между этими временами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...