我将字段类型为“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/