我有大约3200万格式的数据元素:
2012-02-22T16:46:28.9670320 + 00:00
我被告知+00:00
表示hour:minute
时区偏移,但Postgres只接受小时偏移(即使是小数),而不是分钟。那么我是否必须处理数据以从每个元组中删除最后:00
并以时间戳读取数据?我想避免预处理数据文件,但如果Postgres不接受这些值,那么我会这样做。
此外,给定数据中指定的精度在秒部分中是7位小数,而Postgres时间戳数据类型允许最大6位小数位精度(毫秒)。我是否必须将7位小数精度修改为6以便允许Postgres读取记录,或者Postgres会在读取元组时自动将7转换为6吗?
答案 0 :(得分:0)
pgsql=# SELECT '2016-07-10 20:12:21.8372949999+02:30'::timestamp with time zone AS ts;
ts-------------------------------
2016-07-10 17:42:21.837295+00
(1 row)
似乎至少在PostgreSQL 9.4及更高版本(可能更早)中,未记录分钟时区偏移处理,但如果使用则会正确处理。类似地,如果我尝试读取时间戳在秒内具有7位小数位精度,那么它将自动将其转换为6位小数(微秒)精度。