🔖
【SQL】BETWEEN の使い方と注意点を解説
はじめに
SQLで数値や日付の範囲を指定したいとき、
よく使われるのが BETWEEN
です。
SELECT * FROM products
WHERE price BETWEEN 100 AND 500;
このようにシンプルに書けて便利ですが、
範囲の扱い方や、日付との組み合わせで注意が必要なポイントもあります。
本記事では、BETWEEN
の基本的な使い方と注意点を整理します。
BETWEEN
の基本構文
1. column_name BETWEEN 値1 AND 値2
-
column_name
が 値1以上、値2以下の範囲に含まれるかをチェックします。
これは以下と同じ意味です。
column_name >= 値1 AND column_name <= 値2
- 数値・日付どちらでも同様に、両端を含む比較になります。
※ なお、BETWEEN
は文字列にも使用可能ですが、その場合は文字コード順で比較されるため注意が必要です。
2. 数値の例
まずは products
テーブルの例から見てみましょう。
products
テーブル例:id | name | price |
---|---|---|
1 | Apple | 120 |
2 | Banana | 80 |
3 | Orange | 300 |
4 | Mango | 500 |
5 | Pineapple | 700 |
クエリ
SELECT * FROM products
WHERE price BETWEEN 100 AND 500;
実行結果
id | name | price |
---|---|---|
1 | Apple | 120 |
3 | Orange | 300 |
4 | Mango | 500 |
✅ 80
は範囲外なので含まれません。
このクエリでは、price
が 100以上500以下の商品だけが取得されます。
3. 日付の例(よくある落とし穴)
次に、events
テーブルを使った例です。
events
テーブル例:id | name | event_date |
---|---|---|
1 | New Year Party | 2025-01-01 10:00:00 |
2 | Conference | 2025-01-15 14:00:00 |
3 | Workshop | 2025-01-31 09:30:00 |
4 | Seminar | 2025-02-01 11:00:00 |
クエリ
SELECT * FROM events
WHERE event_date BETWEEN '2025-01-01' AND '2025-01-31';
実行結果(期待とずれる場合がある)
id | name | event_date |
---|---|---|
1 | New Year Party | 2025-01-01 10:00:00 |
2 | Conference | 2025-01-15 14:00:00 |
❌ Workshop
(1月31日)は datetime
型で時刻が含まれており、
'2025-01-31'
は '2025-01-31 00:00:00'
と解釈されるため、条件に合致せず除外されます。
✅ 安全な書き方の例
SELECT * FROM events
WHERE event_date >= '2025-01-01'
AND event_date < '2025-02-01';
🔹 正しい実行結果
id | name | event_date |
---|---|---|
1 | New Year Party | 2025-01-01 10:00:00 |
2 | Conference | 2025-01-15 14:00:00 |
3 | Workshop | 2025-01-31 09:30:00 |
✅ event_date
が datetime
型の場合、月末のデータを確実に取得するには < '翌月1日'
のように書くのが一般的です。
4. 範囲指定の順番にも注意
-- OK(昇順)
BETWEEN 100 AND 500
-- 結果が0件になる例(降順)
BETWEEN 500 AND 100
-
BETWEEN
は 小さい値 → 大きい値 の順で書く必要があります。 - 順番を逆にすると、条件に一致する行がなくなり、結果が空になるため注意が必要です。
まとめ
ポイント | 説明 |
---|---|
両端を含む |
BETWEEN は >= と <= と同じ意味 |
日付は要注意 |
datetime 型では時刻の影響を受ける |
安全な日付範囲 |
>= 開始日 AND < 翌月1日 で書くと確実 |
順番を守る |
BETWEEN 小さい値 AND 大きい値 と書くこと |
おわりに
BETWEEN
はシンプルで読みやすい構文ですが、
時刻付きのデータや範囲の順番など、意外と注意すべきポイントもあります。
結果がうまく取得できないときは、BETWEEN
の動きを疑ってみてください。
本記事が参考になれば幸いです。
Discussion