PostgreSQL 日付の重複をチェックする

PostgreSQL 日付の重複をチェックする

PostgreSQLで、日付の重複をチェックする手順を記述してます。

環境

  • OS Rocky Linux release 8.4 (Green Obsidian)
  • PostgreSQL 14.0
  • pgadmin 6.0

手順

日付の重複をチェックする場合は、「OVERLAPS」を使用します。

(start1, end1) OVERLAPS (start2, end2)

or

(start1, length1) OVERLAPS (start2, length2)

実際に、判定してみます。

SELECT (date '2022-01-01', date '2022-02-01') OVERLAPS
       (date '2022-01-10', date '2022-02-10')

実行結果

範囲内に存在するため「true」が返ります。

以下のように範囲外を指定すると「false」が返ります。

SELECT (date '2022-01-01', date '2022-02-01') OVERLAPS
       (date '2022-02-02', date '2022-02-10')

実行結果

また、endとstartが同じだった場合も「false」となります。

SELECT (date '2022-01-01', date '2022-02-01') OVERLAPS
       (date '2022-02-01', date '2022-02-10')

実行結果

ただし、以下のように同じ日付を指定した場合は「true」となります。

SELECT (date '2022-02-01', date '2022-02-01') OVERLAPS
       (date '2022-02-01', date '2022-02-10')

実行結果

interval使用

intervalを使用しても、結果は同じです。

SELECT (date '2022-02-01', interval '30 days') OVERLAPS
       (date '2022-02-05', interval '30 days')

実行結果