A.12.1.1 Temporal型

Temporal型のDATE、TIMESTAMP、およびTIMESTAMP WITH TIMEZONEがPGQL問合せでサポートされています。

これらのすべての値型は、Oracle SQLのTIMESTAMP WITH TIME ZONE型を使用して内部で表されます。DATEの値は、UTC+0のタイムゾーンで最も早い時刻と想定して、自動的にTIMESTAMP WITH TIME ZONEに変換されます(たとえば、2000-01-01は2000-01-01 00:00:00.00+00:00になります)。TIMESTAMPの値は、UTC+0タイムゾーンと想定して、自動的にTIMESTAMP WITH TIME ZONEに変換されます(たとえば、2000-01-01 12:00:00.00は2000-01-01 12:00:00.00+00:00)。

Temporalの定数は、PGQL問合せに次のように書き込まれます。

  • DATE 'YYYY-MM-DD'

  • TIMESTAMP 'YYYY-MM-DD HH24:MI:SS.FF'

  • TIMESTAMP WITH TIMEZONE 'YYYY-MM-DD HH24:MI:SS.FFTZH:TZM'

例としては、DATE '2000-01-01'、TIMESTAMP '2000-01-01 14:01:45.23'、TIMESTAMP WITH TIMEZONE '2000-01-01 13:00:00.00-05:00'、およびTIMESTAMP WITH TIMEZONE '2000-01-01 13:00:00.00+01:00'などがあります。

また、Temporal値は、String値をTemporal型にキャストすることで取得できます。サポートされている文字列形式は次のとおりです。

  • DATE 'YYYY-MM-DD'

  • TIMESTAMP 'YYYY-MM-DD HH24:MI:SS.FF'および'YYYY-MM-DD"T"HH24:MI:SS.FF'

  • TIMESTAMP WITH TIMEZONE 'YYYY-MM-DD HH24:MI:SS.FFTZH:TZM'および'YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM'

例としては、CAST ('2005-02-04' AS DATE)、CAST ('1990-01-01 12:00:00.00' AS TIMESTAMP)、CAST ('1985-01-01T14:05:05.00-08:00' AS TIMESTAMP WITH TIMEZONE)などがあります。

PgqlResultSetオブジェクトからの結果を使用する場合、getObjectはTemporal型のjava.sql.Timestampオブジェクトを返します。

バインド変数は、PGQLではTIMESTAMP WITH TIMEZONEのTemporal型にのみ使用でき、java.sql.Timestampオブジェクトを入力として取るsetTimestampメソッドがバインド値を設定するために使用されます。より単純な別の方法として、CAST文で文字列のバインド変数を使用してTemporal値(たとえば、CAST (? AS TIMESTAMP WITH TIMEZONE)とそれに続くsetString(1, "1985-01-01T14:05:05.00-08:00"))をバインドできます。バインド変数の詳細は、「PGQL問合せでのバインド変数の使用」も参照してください。