han*_*xue 6 postgresql timestamp datetime
当我创建表时,创建了一个没有时区的时间戳列。所有导入的时间都在UTC
. 现在我想明确添加时区信息,并且我已经更改了该列
ALTER TABLE review ALTER COLUMN review_time TYPE TIMESTAMP WITH TIME ZONE USING review_time AT TIME ZONE 'UTC';
Run Code Online (Sandbox Code Playgroud)
选择现有数据不显示添加的时区信息
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
Run Code Online (Sandbox Code Playgroud)
我是否需要UPDATE
对现有数据运行语句?如果需要,语法是什么?
缺少时区信息的输出是由于应用程序本身 (SQLWorkbenchJ) 造成的。查询 frompsql
将显示时区
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
Run Code Online (Sandbox Code Playgroud)
我也没有看到问题
创建样本数据,
CREATE TABLE foo(ts) AS VALUES (
now()::timestamp without time zone
);
Run Code Online (Sandbox Code Playgroud)
显示它,
TABLE foo;
ts
----------------------------
2017-09-30 14:25:24.954084
(1 row)
Run Code Online (Sandbox Code Playgroud)
您可以在上面看到输出中没有 tz。现在让我们更改为使用with time zone
.
ALTER TABLE foo
ALTER COLUMN ts
SET DATA TYPE timestamp with time zone;
Run Code Online (Sandbox Code Playgroud)
这是输出,请注意您的 tz 为 -05
TABLE foo;
ts
-------------------------------
2017-09-30 14:25:24.954084-05
(1 row)
Run Code Online (Sandbox Code Playgroud)
你的结果是什么SHOW TIME ZONE
?
有趣的是,我确实明白你在说什么,
# SELECT now()::timestamp with time zone::timestamp;
now
----------------------------
2017-09-30 14:27:53.061616
(1 row)
Run Code Online (Sandbox Code Playgroud)
但是,我们必须知道您在问什么。
归档时间: |
|
查看次数: |
35558 次 |
最近记录: |