Oracle 日付等の範囲の検索を行う「BETWEEN」条件

スポンサーリンク

範囲検索を行う「BETWEEN」条件

「BETWEEN」を使用することにより範囲検索を行うことができます。

「BETWEEN」の基本構文

<式1> [NOT] BETWEEN <式2> AND <式3>

式2が式1以下かつ式1が式3以下を表します!「式2≦式1≦式3」ってことです。

「BETWEEN」の注意点としては2つあります。

まず1つ目としては、評価のされ方が以下ってことですね。大なり小なりではないことを覚えておきましょう!

2つ目は3つある式のデータ型が異なる場合、暗黙の型変換が行われます。
暗黙の型変換はオーバーヘッドなのでなるべく起こらないようにしましょう。数件程度のデータの場合は、大丈夫でしょうが・・・数百万件~数千万件と処理数が大きくなるとパフォーマンスに悪影響を及ぼす可能性があります。

「BETWEEN」の実行例

SQL> select * from animal1;

ID    NAME       ADDRESS
----- ---------- ----------
001   いるか     海
002   うさぎ     陸
003   ぺんぎん   空
004   いるか     海

SQL> select * from animal1
  2  where id BETWEEN '002' AND '004';

ID    NAME       ADDRESS
----- ---------- ----------
002   うさぎ     陸
003   ぺんぎん   空
004   いるか     海

「BETWEEN」の実行例 日付の場合

よくあるのは日付型の場合の範囲検索です。「TO_DATE」関数を使用して型変換を自分で行うようにしましょう。

BETWEEN  TO_DATE('YY-MM-DD 00:00:00', 'YY-MM-DD HH24:MI:SS')
AND      TO_DATE('YY-MM-DD 00:00:00', 'YY-MM-DD HH24:MI:SS')
SQL> select * from test_table;

ID    START_DATE END_DATE
----- ---------- --------
001   19-09-24   19-09-25
002   19-09-25   19-09-26
003   19-09-26   19-09-27
004   19-09-27   19-09-28

SQL> select * from test_table
  2  where end_date
  3  BETWEEN  TO_DATE('19-09-25 00:00:00', 'YY-MM-DD HH24:MI:SS')
  4  AND      TO_DATE('19-09-27 00:00:00', 'YY-MM-DD HH24:MI:SS');

ID    START_DATE END_DATE
----- ---------- --------
001   19-09-24   19-09-25
002   19-09-25   19-09-26
003   19-09-26   19-09-27

コメント

タイトルとURLをコピーしました