sql >> データベース >  >> RDS >> PostgreSQL

現地時間をUTCに変換する方法は?

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




    1. PHPでutf8mb4文字をutf8に変換します

    2. ORD()の例– MySQL

    3. SQL ServerでのOBJECTPROPERTYEX()のしくみ

    4. テーブルのFROM句エントリがありません