これをより効率的にする方法が必要なようです。難点は、任意の日付範囲とその範囲の数です。
このクエリでは、日付 (時間に関係なく) が 2013-01-01、2013-01-03、2013-01-09、または 2013-02-01 であるタスク テーブルから行を取得しようとしています。
tasks
|id | int |
|begin_date| datetime |
SELECT * FROM tasks
WHERE (tasks.begin_date >= '2013-01-01' AND tasks.begin_date < '2013-01-01')
OR (tasks.begin_date >= '2013-01-03' AND tasks.begin_date < '2013-01-04')
OR (tasks.begin_date >= '2013-01-09' AND tasks.begin_date < '2013-01-10')
OR (tasks.begin_date >= '2013-02-01' AND tasks.begin_date < '2013-02-02')
これを行う「適切な」方法はありますか?またははるかに効率的な方法ですか?
SQL Server 2008 を使用しています。