2017-06-17 73 views
0

简而言之,在输入到我的Postgres DB时,我有一个格式为“2014-12-10T12:00:14 + 07:00”的时间戳,我想用'timestampandtz'Postgres C扩展名(https://github.com/mweber26/timestampandtz) ,但我不知道如何处理确定时区的问题。在带有C扩展名的Postgres DB中存储带时区的时间戳?

由于扩展名将输入与zones.c中的完整时区名称进行比较,数据类型将不知道如何处理“+07:00”而不是“@ Continent/City”,它期望在输入。

事情是,我需要从“+07:00”以某种方式拉出城市,因为我确实需要夏令时分辨率。 另外,我知道这些时间戳只来自一个国家,所以也许可以基于此来确定“@洲/城市”。

任何POV关于如何接近这一挑战将不胜感激,谢谢!

+0

即使没有扩展名,PostgreSQL也能够毫无问题地处理转换。我尝试了PG 9.6命令,就像这样在时区'Europe/Berlin''上选择'(2014-12-10T12:00:14 + 07:00'::带时区的时间戳),并且工作正常。 PostgreSQL在时区表中标记了应用夏令时规则的时间表。所以我会先尝试标准的方式。 – JosMac

+0

@JosMac当然,这是正确的事情。但由于我不知道这个城市,所以+ XX - >大陆/城市的关系,我需要自己翻译,因为DST是一个需求... – Rehhyo

回答

1

恐怕你运气不好。没有办法将+07:00这样的时间偏移自动转换为像US/Eastern这样的时区。

原因是同一时间偏移量可能属于不同的时区。例如,-05:00目前可能是America/LimaUS/Central,但这些是不同的时区–前者没有夏令时。

因此,您必须自己提供翻译,例如如果您知道具有某个时间偏移量的所有数据属于哪个时区。

+0

感谢您的清理,我会尝试去思考一些事情=) – Rehhyo

相关问题