Исключить между датами - PullRequest
1 голос
/ 16 октября 2019

У меня есть 2 даты @StartDate и @EndDate, у меня есть таблица, в которой я хранил даты смены конкретной структуры сотрудников, которая определена ниже следующим образом:

EmpCode   ShiftCode  StartDate    EndDate
1         24         2019-10-01   2019-10-12
1         26         2019-10-13   2019-10-20

Если я предоставлю @startDate = '2019-10-01' и @endDate = '2019-10-15' Это не должно получить следующие данные, я хочу исключить строки, где даты находятся между предоставленными датами.

Если предоставленные параметры, скажем,'2019-10-21' и '2019-10-31' соответственно, тогда он должен дать мне код сотрудника, поскольку его смена не определена в эти даты, и я могу добавить его.

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

SELECT 
    EmpCode 
FROM 
    TABLE
WHERE 
    [Roster].[EndDate] NOT BETWEEN @startDate AND @endDate OR 
    [Roster].[EndDate] NOT BETWEEN @startDate AND @endDate

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Вы можете достичь этого, изменив позицию «НЕ». Также у вас возникла ошибка копирования-вставки в предложении where.

SELECT 
    EmpCode 
FROM 
    TABLE
WHERE 
   NOT (
       [Roster].[StartDate] BETWEEN @startDate AND @endDate AND 
       [Roster].[EndDate] BETWEEN @startDate AND @endDate
   )
2 голосов
/ 16 октября 2019

Поскольку Шикар удалил свой пост, простое решение было бы ...

...
WHERE
    @startDate NOT BETWEEN [Roster].[StartDate] AND [Roster].[EndDate] AND 
    @endDate NOT BETWEEN [Roster].[StartDate] AND [Roster].[EndDate]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...