2017-05-15 3 views
0

タイムゾーンなしでタイムスタンプを使用していたテーブルを変更して、タイムゾーン付きのテーブルをポストグルに変更する必要があります。私がしようとするので、既に古いデータが取り込ま必要なテーブル:タイムゾーン付きタイムテーブルの変更テーブルで古いデータを移行する必要がある

ALTER TABLE mytable ALTER COLUMN createdat TYPE timestamp with time zone; 

万一この変更は、すべての既存のレコードかどうか?。 私は変更を見たことがありますが、実際にタイムゾーンのエントリ( "Europe/London")が記録されているかどうかは分かりません。私はデシベルでこれを実行することにより、現在のタイムゾーンを確認することができ2017-05-14 05:47:43.523+00

タイムゾーンなしの記録:2017-05-15 02:19:02.443とALTER TABLEとタイムゾーンにタイムスタンプを追加することに

SELECT current_setting('TIMEZONE') 

ヨーロッパ/ロンドン

答えて

0

timestamp with time zoneは、PostgreSQLにタイムゾーン情報を格納しません。取得時にセッションタイムゾーンに変換されるUTCタイムスタンプを格納します。

表示されるALTER TABLEは、現在のセッションのタイムゾーンでtimestamp without time zoneの値を解釈するので、すべてのデータがEurope/Londonタイムゾーンで解釈される場合、結果は正しいはずです。

タイムスタンプのタイムゾーンを保存する必要がある場合は、入力タイムゾーンを保持するには、タイムゾーンを別のフィールドとして保存する必要があります。私は自分のタイムゾーンを変更した場合

SHOW TimeZone; 
┌───────────────┐ 
│ TimeZone │ 
├───────────────┤ 
│ Europe/Vienna │ 
└───────────────┘ 
(1 row) 

CREATE TABLE mytime(
    id integer PRIMARY KEY, 
    ts timestamp without time zone NOT NULL 
); 

INSERT INTO mytime VALUES (1, '2017-05-15 12:00:00'); 

SELECT * FROM mytime; 
┌────┬─────────────────────┐ 
│ id │   ts   │ 
├────┼─────────────────────┤ 
│ 1 │ 2017-05-15 12:00:00 │ 
└────┴─────────────────────┘ 
(1 row) 

ALTER TABLE mytime ALTER ts TYPE timestamp with time zone; 

SELECT * FROM mytime; 
┌────┬────────────────────────┐ 
│ id │   ts   │ 
├────┼────────────────────────┤ 
│ 1 │ 2017-05-15 12:00:00+02 │ 
└────┴────────────────────────┘ 
(1 row) 

、変更表示された値:ALTER TABLEで新しいレコードを追加するまあ

SET TimeZone = 'Asia/Kolkata'; 

SELECT * FROM mytime; 
┌────┬───────────────────────────┐ 
│ id │   ts    │ 
├────┼───────────────────────────┤ 
│ 1 │ 2017-05-15 15:30:00+05:30 │ 
└────┴───────────────────────────┘ 
(1 row) 
+0

は次のように表示されます:「2017年5月15日14:12:19.26491+ 02 "タイムゾーンの変更後のテーブルで既存のレコードに何が起こっていないのか混乱しています –

+0

値に何が問題なのですか? –

+0

私は上記のように、上記のように表示されます:2017-05-14 05:47:43.523 + 00。新しいデータの日付フィールドを追加すると、2017-05-15 14:12:19.26491 + 02のようになります。私はちょうどタイムゾーンで変換された既存の日付かどうか確認したいですか? –

関連する問題