- Home
- SQL Server
- BETWEENは「小さい値 AND 大きな値」でないとデータが取れない
BETWEENは「小さい値 AND 大きな値」でないとデータが取れない
- 2017/1/19
- SQL Server
- BETWEEN, 範囲指定のルール
- コメントを書く
値の範囲を抽出条件で指定する「BETWEEN」のルール
BETWEENはよく日付の何日~何日までという使い方がされる。
BETWEEN 開始日 AND 終了日
仮に「BETWEEN ‘2016/09/01’ AND ‘2016/09/10’」
と書けば、9月1日から9月10日までの条件に合致するデータが取得できる。
しかし、これには落とし穴がある。
BETWEEN 小 AND 大
でなければならないというルールである。
これを
BETWEEN 大 AND 小
と書くと、データが1件も取れないのである。
この問題は、物流系や工場系のシステムをやるとぶち当たる。
例えば
「希望納期日」と「実際の納品日」を扱う場合である
BETWEEN 希望納期日 AND 実際の納品日
と書くと、納期日が守られた場合と納期が遅れた場合はデータが取得されるが
納期よりも前に荷物が届いた場合は、データが取得されない。
この場合、「納期が守られた、または遅れた」と「納期よりも前に届いた」の2つの
条件を記述しなければならない。
1 2 3 4 5 6 7 8 |
SELECT * FROM 商品入荷テーブル WHERE (日付 BETWEEN 希望納期日 AND 実際の納品日 OR 日付 BETWEEN 実際の納品日 AND 希望納期日) |
これでどちらの日付が小さくても、同じ結果を出すことができる
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。