2

これをより効率的にする方法が必要なようです。難点は、任意の日付範囲とその範囲の数です。

このクエリでは、日付 (時間に関係なく) が 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 を使用しています。

4

3 に答える 3