我将字段类型为“timestamp with time zone”字符串“1858-11-17 01:09:05+0000”插入表中,并取回strage格式值“05:11:29+04:02:24”。

这是 session

test=> create table ddtbl (val timestamp with time zone);
CREATE TABLE
test=> insert into ddtbl (val) values ('1858-11-17 01:09:05+0000');
INSERT 0 1
test=> select * from ddtbl;
             val
------------------------------
 1858-11-17 05:11:29+04:02:24

为什么会发生这种情况,这里的“+04:02:24”是什么?

UPD:PostgreSQL 版本
% psql --version
psql (PostgreSQL) 9.2.4

UPD2:本地时区
% date +%Z
YEKT
% date +%z
+0600

最佳答案

这是时区的影响。在 20 世纪早期之前,许多国家(如德国或俄罗斯)拥有完全不同的制度,例如“平均太阳时”,这无法清楚地转换为 UTC。

因此,当表示为叶卡捷琳堡(俄罗斯)的本地时间时,时区 0 中的时间(当时的格林威治标准时间,因为还没有 UTC)会有一个奇数的时间偏移。
+04:02:24 是与 UTC 相比的实际偏移量。

关于database - PostgreSql:获取奇怪格式的 "timestamp with time zone",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16572455/

10-12 00:32
查看更多