处理Postgres中奇怪格式的时间戳?

时间:2016-07-10 18:49:51

标签: postgresql

我有大约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吗?

1 个答案:

答案 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位小数(微秒)精度。