これについては、マニュアル> 、しかし、実際に日付/時刻を操作する方法が常に明らかであるとは限りません。 SQL仕様は少し奇妙です。
質問の場合、時刻をUTCで保存するかどうかは明確ではありませんが、サーバーの現地時間(TimeZone
)で表示します。 )、またはTimeZone
を無視したいかどうか 常にUTCとして表示します。後者を想定します。
タイムスタンプの場合は、AT TIME ZONE
を使用するだけです。 2回のように:
SELECT TIMESTAMP '2013-08-13 00:00:00' AT TIME ZONE 'Australia/Sydney' AT TIME ZONE 'UTC';
AT TIME ZONE
を使用する必要があります 2回。入力timestamp
を変換するために1回 timestamptz
へ 引数のタイムゾーンに従って、次にそれをtimestamp
に変換する別の UTCで。
残念ながら、SQL仕様がAT TIME ZONE
を定義する(IMOの非常識な)方法のために TIME
の場合 、TIME
に対して同じことを行うことはできません 。 TimeZone
を操作する必要があります 代わりに変数:
SET TimeZone = 'UTC';
SELECT TIME '07:00' AT TIME ZONE 'Australia/Sydney';
これでもtimetz
が残ります time
ではありません 。そのため、その表示値はtimezone
によって変化します 設定。