无法让我的 SQL 查询按我想要的日期过滤

0 sql-server format

我有一个查询,如果日期列有一组日期中的任何一个,我想在其中排除行。

我很难弄清楚如何在不过滤一个月的情况下返回正确的结果集。

我最初的尝试假设运算符 '!=' 能够指定多个变量,但我可能会误会。

如何以删除所有我不想要的指定日期的方式过滤结果?

SELECT * INTO IPS_TransactionDataAll2
FROM
[IPS_TransactionDataAll1]
where Format([Start Date], 'MM/yyyy') != ('07/2016''08/2016''09/2016''10/2016''11/2016''10/2016''01/2017''02/2017''03/2017''04/2017''05/2017''06/2017''07/2017')
Run Code Online (Sandbox Code Playgroud)

伪代码:

从 TableA 中选择到 TableB 其中日期不在 7-11/2016 和 1-7/2017 月份

Bra*_*adC 10

!= 不支持这样的项目列表。

尝试其中之一(注意项目之间的逗号):

WHERE Format([Start Date], 'MM/yyyy') NOT IN ('07/2016','08/2016','09/2016',...)
Run Code Online (Sandbox Code Playgroud)

甚至更好(更快),无需转换为文本(如果您的日期范围确实像您的示例一样连续):

WHERE [START Date] NOT BETWEEN '2016-07-01' AND '2017-07-31 23:59:59'
Run Code Online (Sandbox Code Playgroud)

由于 between 包含端点,因此等效于:

WHERE [START Date] >= '2016-07-01' 
AND   [START Date] <  '2017-08-01'
Run Code Online (Sandbox Code Playgroud)