Tsql 从报告中排除日期

Tsql 从报告中排除日期,tsql,Tsql,本周一(8月26日)是英国的公共假日。我需要从我的一些报告中排除这个日期 很简单,但我有一个数据库,其中日期被分为15分钟,例如: 2019-08-2608:30:00.000 2019-08-26 16:15:00.000 我能从报告中排除所有这些日期的唯一方法是使用NOT IN,例如: 和a.mydate不在('2019-08-26 08:30:00.000'、'2019-08-26 16:15:00.000') 这对我来说似乎是一种相当沉重的方式 还有: 和a.mydate不在“2019

本周一(8月26日)是英国的公共假日。我需要从我的一些报告中排除这个日期

很简单,但我有一个数据库,其中日期被分为15分钟,例如:

2019-08-2608:30:00.000

2019-08-26 16:15:00.000

我能从报告中排除所有这些日期的唯一方法是使用NOT IN,例如:

和a.mydate不在('2019-08-26 08:30:00.000'、'2019-08-26 16:15:00.000')
这对我来说似乎是一种相当沉重的方式

还有:

和a.mydate不在“2019-08-26 08:30:00.000”和“2019-08-26 19:30:00.000”之间
但是,如果这方面有进展的话,了解这方面的任何进展都将是有益的,因为今后将有更多、也许更多的公共假日被排除在外

我没有一个包含假日日期的单独表,所以我需要按照上面的脚本编写


谢谢

如果您有离散值,您可以将它们添加到一个表中,然后执行左联接,并在
中放置一个过滤器,其中
表示排除表的Id应该为null(表示联接失败)

例如:

SELECT 
       mydata
FROM
       mytable mt LEFT JOIN Holidays h ON mt.mydate = h.date
WHERE
       h.Id IS NULL
这只是一种可能的替代方法,因为您有离散值,我不确定它是否真的更快…

这更有效:

and cast(a.mydate as date) not in 

   (  '2019-08-26', 

      '2019-12-25', 

      '2019-12-26',

      '2020-01-01',

       . . .  ) 


谢谢-是的,抱歉,我刚刚修改了我的帖子,说我没有单独的假期表格(也没有创建表格的权限)-谢谢你的回复。