6.8.3.3 PGQL問合せでのINTERVALリテラルの使用

PGQL問合せでINTERVALリテラルを使用すると、PGQL Temporalデータ型に対する間隔の加算または減算をそれぞれ実行できます。

サポートされるTemporalデータ型については、PGQL 1.5 Specificationを参照してください。

INTERVAL型は期間で、キーワード"INTERVAL"とそれに続く数値および時間単位で構成されます。たとえば、INTERVAL '1' DAYとなります。

次の表に、INTERVAL値でサポートされる有効な時間単位を示します。

表6-4 INTERVAL値のフィールドの有効な値

キーワード サポートされる有効な値
YEAR <間隔先行フィールド精度>以外は制約なし
MONTH 月(年単位) (0-11)
DAY <間隔先行フィールド精度>以外は制約なし
HOUR 時間(日単位)(0-23)
MINUTE 分(時間単位) (0-59)
SECOND 秒(分単位) (0-59.999...)

次のINTERVAL操作がTemporalデータ型でサポートされています。

  • TEMPORAL TYPE + INTERVAL
  • INTERVAL + TEMPORAL TYPE
  • TEMPORAL TYPE - INTERVAL

たとえば、次のPGQL問合せでは、n.birthdate + INTERVAL '20' YEAR > TIMESTAMP '2000-01-01 00:00:00'である個人を取得します。

opg4j> graph.queryPgql("SELECT n.name, n.birthdate FROM MATCH (n:Person) WHERE n.birthdate + INTERVAL '20' YEAR > TIMESTAMP '2000-01-01 00:00:00'").print()
graph.queryPgql("SELECT n.name, n.birthdate FROM MATCH (n:Person) WHERE n.birthdate + INTERVAL '20' YEAR > TIMESTAMP '2000-01-01 00:00:00'").print();
graph.query_pgql("SELECT n.name, n.birthdate FROM MATCH (n:Person) WHERE n.birthdate + INTERVAL '20' YEAR > TIMESTAMP '2000-01-01 00:00:00'").print()

実行時に、問合せ出力は次のようになります。

+--------------------------+
| name  | birthdate        |
+--------------------------+
| Mary  | 1982-09-25T00:00 |
| Alice | 1987-02-01T00:00 |
+--------------------------+