我有一堆SQL選擇收集數據用於導出和分析。我已經在幾個變量中聲明瞭我想要收集數據的日期範圍並運行查詢,總共有10個選擇使用相同的日期範圍變量。我想要做的就是輕鬆地從查詢中排除某些日期(它們是單日而不是範圍),使用某種排除列表,我可以在變量中聲明,這樣我所有的選擇都會刪除這些特定的日期,而不是編輯每個選擇聲明。SQL日期排除
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)
你爲什麼要將日期轉換爲日期? – Oded
當在SQL Server中使用日期範圍來使用'> ='和'<'而不是'between'時,通常會更好。這使您可以使用更合理的表示形式,並避免當前發生的問題,即缺少在間隔的最後一秒發生的任何事情(例如'2012-05-18T23:59:59.003')。 –
這是一個遺留/懶惰的事情,我使用的某些日期列的數據類型實際上並不是數據庫中的日期時間,這是一個解決方法。 – user1414459