PostgreSQLで日付範囲を抽出する
PostgreSQLで日付範囲を抽出するクエリ
基本的な日付範囲抽出
SELECT * FROM テーブル名
WHERE 列名 BETWEEN 開始日 AND 終了日;
例: 2024年3月10日から2024年3月18日までのデータを抽出
SELECT * FROM 注文
WHERE 注文日 BETWEEN '2024-03-10' AND '2024-03-18';
開いた範囲と閉じた範囲
上記例では、BETWEEN
演算子は閉じた範囲を指定します。つまり、開始日と終了日を含むデータが抽出されます。
開いた範囲を指定するには、BETWEEN
の代わりにBETWEEN SYMMETRIC
を使用します。
SELECT * FROM テーブル名
WHERE 列名 BETWEEN SYMMETRIC 開始日 AND 終了日;
SELECT * FROM 注文
WHERE 注文日 BETWEEN SYMMETRIC '2024-03-10' AND '2024-03-18';
日付比較演算子
BETWEEN
以外にも、日付比較演算子を使用して日付範囲を指定できます。
=
: 等号。指定された日付と一致するデータを取得します。
例: 2024年3月18日より後のデータを取得
SELECT * FROM 注文
WHERE 注文日 > '2024-03-18';
その他のヒント
WHERE
句で複数の条件を指定するには、AND
またはOR
を使用できます。- 日付型のカラムにインデックスを作成しておくと、クエリのパフォーマンスが向上します。
基本的な日付範囲抽出
-- 2024年3月10日から2024年3月18日までの注文データを取得
SELECT *
FROM 注文
WHERE 注文日 BETWEEN '2024-03-10' AND '2024-03-18';
開いた範囲と閉じた範囲
-- 2024年3月10日より後の注文データと2024年3月18日より前の注文データを取得
SELECT *
FROM 注文
WHERE 注文日 BETWEEN SYMMETRIC '2024-03-10' AND '2024-03-18';
-- 2024年3月10日を含む注文データを取得
SELECT *
FROM 注文
WHERE 注文日 >= '2024-03-10';
-- 2024年3月18日を含む注文データを取得
SELECT *
FROM 注文
WHERE 注文日 <= '2024-03-18';
日付比較演算子
-- 2024年3月18日より後の注文データを取得
SELECT *
FROM 注文
WHERE 注文日 > '2024-03-18';
-- 2024年3月10日より前の注文データを取得
SELECT *
FROM 注文
WHERE 注文日 < '2024-03-10';
複数の条件
-- 2024年3月10日から2024年3月18日までの、かつ金額が1000円以上の注文データを取得
SELECT *
FROM 注文
WHERE 注文日 BETWEEN '2024-03-10' AND '2024-03-18'
AND 金額 >= 1000;
PostgreSQLで日付範囲を抽出するその他の方法
date_trunc()関数
-- 2024年3月の注文データを取得
SELECT *
FROM 注文
WHERE date_trunc('month', 注文日) = '2024-03';
generate_series()
関数は、指定された日付範囲の連続した日付を生成します。
-- 2024年3月10日から2024年3月18日までの日付を生成
SELECT generate_series('2024-03-10', '2024-03-18', interval 1 day);
CTE (Common Table Expressions)
CTEを使用して、複雑なクエリを複数のステップに分割できます。
-- 2024年3月の注文データを取得
WITH t AS (
SELECT *
FROM 注文
WHERE date_trunc('month', 注文日) = '2024-03'
)
SELECT *
FROM t;
PostgreSQLで日付範囲を抽出するには、さまざまな方法があります。
- 基本的な日付範囲抽出:
BETWEEN
演算子 - 開いた範囲と閉じた範囲:
BETWEEN SYMMETRIC
演算子 - 日付比較演算子:
=
,<
,<=
,>
,>=
- 複数の条件:
AND
,OR
- その他の方法:
date_trunc()
,generate_series()
, CTE
状況に応じて適切な方法を選択してください。
sql postgresql date