26.2.2.2 カスタム日時書式の指定

データの日時書式を手動で指定することもできます。

デフォルトでは、PGXは、事前定義済書式のセットを使用して日時値を解析しようとします。これが失敗すると、次のような例外がスローされます。
property timestamp_of_birth: could not parse value at line 1 for property of temporal type OffsetDateTime using any of the given formats
このような場合は、日時データのカスタム書式を設定できます。
日時書式を指定するには、次の2つの方法があります。
  • プロパティごと
  • 型ごと

プロパティ固有の日時書式:

次に示すように、例26-1で使用されているプロパティtimestamp_of_birthの書式をカスタマイズしてyyyy-MM-dd H[H]:m[m][:s[s]][XXX]という書式にできます。

例26-2 プロパティ固有の日時書式の指定:

{
    "name":"timestamp_of_birth",
    "type":"timestamp_with_timezone",
    "format":["yyyy-MM-dd H[H]:m[m][:s[s]][XXX]"]
}

yyyy-MM-dd H[H]:m[m][:s[s]][XXX]は、タイムスタンプ値が次のもので構成されることを示します。

  • 4桁の年
  • ハイフンとそれに続く2桁の月
  • ハイフンとそれに続く2桁の日
  • スペース
  • 1桁または2桁として指定された時間
  • コロンとそれに続く、1桁または2桁として指定された分
  • コロンとそれに続く、1桁または2桁として指定された秒で構成されるオプション部分
  • オプションのタイムゾーン

ノート:

  • H[H]:m[m]では、値01:15および値1:15が許可されます。
  • yyyy-MM-ddでは、値1989-01-15は許可されますが、値1989-1-15は許可されません。ただし、2桁の月と日が必要な場合、yyyy-M[M]-d[d]のような書式を使用できます。

また、書式指定では書式のリストを使用します。前述の例では、リストに1つの書式のみが含まれていますが、任意の数の書式を指定できます。複数の書式を指定した場合は、日時データの解析時に、解析が成功するまで左から右へと書式が試行されます。このようにして、様々な書式の値が混在しているデータをロードすることもできます。

型固有の日時書式:

型ごとに日時書式を指定することもできます。日時書式の指定が1回のみで済むため、これは、同じ型と同じ書式を持つプロパティが複数ある場合に便利です。

型ごとの指定の場合、その特定の型を持つそれぞれの頂点またはエッジ・プロパティに書式が使用されます。

次の例は、2つの型固有の書式(local_date_formatおよびtimestamp_with_timezone_format)を示しています。

例26-3 型固有の日時書式の指定:

...
    "edge_props":[
    ],
    "separator":",",
    "local_date_format":["yyyy-MM-dd"],
    "timestamp_with_timezone_format":["yyyy-MM-dd H[H]:m[m][:s[s]][XXX]"]
}

この例では、日付型(local_date)のプロパティの書式はyyyy-MM-ddで、タイム・ゾーン付きタイムスタンプ型(timestamp_with_timezone)のプロパティの書式はyyyy-MM-dd H[H]:m[m][:s[s]][XXX]です。

ノート:

プロパティ固有の書式は常に、型固有の書式より優先されます。型固有の書式を指定し、その特定の型のプロパティがプロパティ固有の書式も持つ場合は、プロパティ固有の書式のみを使用して日時データが解析されます。