首页 > 解决方案 > 在日期之间排除

问题描述

我有 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

标签: sql-server

解决方案


由于 Shikar 删除了他的帖子,简单的解决方案是......

...
WHERE
    @startDate NOT BETWEEN [Roster].[StartDate] AND [Roster].[EndDate] AND 
    @endDate NOT BETWEEN [Roster].[StartDate] AND [Roster].[EndDate]

推荐阅读