テーブルを作成すると、タイムゾーンのないTimestamp列が作成されました。インポートされた時間はすべてUTC
です。次に、タイムゾーン情報を明示的に追加し、列を変更しました
ALTER TABLE review ALTER COLUMN review_time TYPE TIMESTAMP WITH TIME ZONE USING review_time AT TIME ZONE 'UTC';
既存のデータを選択しても、追加されたタイムゾーン情報は表示されません
review_time
2017-07-28 02:25:44
2017-07-28 03:10:35
2017-07-28 03:11:32
2017-07-28 03:11:35
2017-07-28 03:11:38
2017-07-28 03:11:41
2017-07-28 18:54:54
既存のデータに対してUPDATE
ステートメントを実行する必要がありますか?その場合、構文は何ですか?
タイムゾーン情報がない出力は、アプリケーション自体(SQLWorkbenchJ)が原因です。 psql
からクエリを実行すると、タイムゾーンが表示されます
mydb # SELECT review_time FROM review;
review_time
------------------------
2017-08-20 08:00:02+08
2017-07-27 00:45:33+08
2017-07-27 00:45:37+08
2017-07-28 02:24:03+08
2017-07-28 02:24:27+08
2017-07-28 02:24:31+08
2017-07-28 02:25:31+08
私も問題を見ません
サンプルデータを作成し、
CREATE TABLE foo(ts) AS VALUES (
now()::timestamp without time zone
);
それを表示し、
TABLE foo;
ts
----------------------------
2017-09-30 14:25:24.954084
(1 row)
上記では出力にtzがないことがわかります。次に、with time zone
を使用するように変更します。
ALTER TABLE foo
ALTER COLUMN ts
SET DATA TYPE timestamp with time zone;
これが出力です。tzが-05
であることに注意してください
TABLE foo;
ts
-------------------------------
2017-09-30 14:25:24.954084-05
(1 row)
SHOW TIME ZONE
の結果はどうですか?
興味深いことに、私はあなたが話していることを理解しています。
# SELECT now()::timestamp with time zone::timestamp;
now
----------------------------
2017-09-30 14:27:53.061616
(1 row)
ただし、私たちはあなたが何を求めているのかを知る必要があります。