我有一堆 SQL 选择来收集数据以进行导出和分析。我已经声明了我想在几个变量中收集数据并运行查询的日期范围,总共有 10 个选择使用相同的日期范围变量。我想做的是使用可以在变量中声明的某种排除列表轻松地从查询中排除某些日期(它们是单天而不是一个范围),这样我的所有选择都会删除这些特定日期,而不是编辑每个选择陈述。
DECLARE @date_start DATETIME, @date_end DATETIME
SET @date_start = '2011-10-20 00:00:00'
SET @date_end = '2012-05-18 23:59:59'
SELECT
date, col1, col2, col3
FROM
table1
WHERE
date BETWEEN CONVERT(DATETIME, @date_start, 102) AND CONVERT(DATETIME, @date_end, 102)
SELECT
date, col4, col5, col8
FROM
table2
WHERE
date BETWEEN CONVERT(DATETIME, @date_start, 102) AND CONVERT(DATETIME, @date_end, 102)
SELECT
date, col3, col5, col6, col7, col8
FROM
table3
WHERE
date BETWEEN CONVERT(DATETIME, @date_start, 102) AND CONVERT(DATETIME, @date_end, 102)