2016-09-22 55 views
0

我試圖將Postgres中的列從Timestamp without time zone遷移到timestamp with time zone。我想這樣做,德國的時候,所以我用下面的查詢:PostgreSQL:將沒有時區的時間戳轉換爲特定的時區不起作用

alter table table_name alter column uploaddate type TIMESTAMP WITH TIME ZONE USING uploaddate at time zone 'UTC+01:30'; 

遺憾的是它不工作,它的加入2015-06-30 07:30:48.785+05:30。我目前在印度,這是+5.30。我怎樣才能指定查詢與德國時區做到這一點。謝謝。

回答

1

表中存儲的時間戳的時區是什麼?也就是說,如果表中存在諸如2016-09-22 07:30的值,那麼在什麼時區是07:30?這是您要使用的時區,而不是您當前的本地時區。所以例如如果所有時間戳在德國時區表示,你應該這樣做:

alter table table_name 
alter column uploaddate type TIMESTAMP WITH TIME ZONE 
USING uploaddate at time zone 'Europe/Berlin'; 

不要忘記,你可以在上面運行的事務中,這樣您提交它們(當然這會之前,你可以檢查結果鎖定整個表並阻止該表的所有其他併發查詢)。

+0

我怎樣才能確認這一點,因爲即使這樣做後,它顯示我+5.30。我有備份,所以我只是替換它。 –

+0

你的意思是_轉換後,如果你運行一個select查詢,它將打印一個+5.30偏移量?如果是這樣的話,那不是問題,這只是關於'psql'_prints_時間戳,而不是postgresql _stores_它們。您可以設置'SET TIME ZONE'歐洲/柏林'',然後在同一會話中的所有後續查詢將在德語時間的文本表示中打印時間戳。 – redneb

+0

只是最後一個問題,我怎樣才能看到在pgadmin或通過PSQL設置的時間戳? –

相關問題