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

postgresql8.3でタイムスタンプのタイムゾーンを知る方法

    ctという名前の列があると思います タイプはTIMESTAMPTZ テーブル内t 。次に、以下を使用できます:

    SELECT EXTRACT(TIMEZONE FROM ct) FROM t;
    

    タイムゾーンのオフセットを秒単位で取得します。それはあなたに3600を与えます UTCから / GMT つまり、GMT+1のいずれかを意味します 、CET または何でも。返される値は、TIMEZONEによって異なります。 設定。

    サンプル(私はドイツに住んでいます。実際のタイムゾーンはGMT+1です。 / CET ):

    test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
          timestamptz       
    ------------------------
     2008-01-01 18:00:00+01
    
    test=# set timezone to 'gmt';
    SET
    test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
          timestamptz       
    ------------------------
     2008-01-01 17:00:00+00
    

    ご覧のとおり、設定されたタイムゾーンで常に何でも出力します。したがって、EXTRACT(TIMEZONE FROM ...)で取得するオフセット TIMEZONEによって異なります 設定。 INSERTで指定されたタイムゾーン 救われる価値がないので、失われます。重要なのは、すべてが正しく、TIMEZONEに依存してはならないということです。 設定。 PostgreSQLはそれを非常にうまく行っています。



    1. group_concatの使用

    2. mysqlのビットフィールド内のCSVからデータをロードします

    3. PostgreSQLのジャストインタイムコンパイル(JIT)の概要

    4. PostgreSQLの制約。これはコミット時にチェックされ、それ以前ではチェックされません。