我想從一個日期範圍exlcude週四在SQL Server中的日排除
以下是我想出了其他的例子:
SELECT *
FROM table
WHERE ((DATEPART(WEEKDAY, date_field) + @@DATEFIRST) % 7) NOT IN (5)
這似乎是工作,但我想看看是否有任何改進建議等。
謝謝!
我想從一個日期範圍exlcude週四在SQL Server中的日排除
以下是我想出了其他的例子:
SELECT *
FROM table
WHERE ((DATEPART(WEEKDAY, date_field) + @@DATEFIRST) % 7) NOT IN (5)
這似乎是工作,但我想看看是否有任何改進建議等。
謝謝!
嘗試DATENAME()
功能:
select * from table where DATENAME(WEEKDAY, date_field) <> 'Thursday'
不確定這是否會成爲性能方面的更好解決方案,因爲謂詞仍將包含列的*表達式*與包含列的*表達式*比較,並將其與值相比較。無論採用哪種方式,這都會使查詢不那麼普遍,因爲原始方法允許您在* any *語言環境中使用查詢,而這可以將其限制爲任何*英語*語言環境。 (當然,可能仍然在爲OP工作。) – 2015-02-11 07:55:22
這是要掃描,除非你的索引計算列(這將是艱難的日期/時間計算),我不知道,有一種方法來解決該問題。但至少,[請停止使用像'dw'這樣的懶惰速記](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-與-日期時間operations.aspx)。 – 2015-02-10 20:53:06
感謝您的提示,不知道。有點諷刺,但至少,你看到了你的網站。 – boognish 2015-02-10 21:03:09
我不關心我的網站的意見 - 它甚至不是我的網站。我確實看到相同類型的模式始終導致相同類型的問題。我試圖提供一些有用的建議。如果你發現這種尷尬,你可能想要停止使用互聯網。 – 2015-02-10 21:09:38