これについては、マニュアル> 、しかし、実際に日付/時刻を操作する方法が常に明らかであるとは限りません。 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によって変化します 設定。