【发布时间】:2017-11-20 03:49:51
【问题描述】:
简而言之,在输入我的 Postgres DB 时,我有一个格式为“2014-12-10T12:00:14+07:00”的时间戳,我想使用“timestampandtz”Postgres C 扩展(@ 987654321@),但我不知道如何处理确定时区的问题。
由于扩展程序将输入与 zone.c 中的完整时区名称进行比较,因此数据类型将不知道如何处理“+07:00”而不是“@ Continent/City”,它期望输入.
问题是,我需要以某种方式从“+07:00”中撤出城市,因为我确实需要夏令时分辨率。 另外,我知道这些时间戳仅来自一个国家,因此也许可以根据此考虑确定“@ Continent/City”。
任何关于如何应对这一挑战的 POV 将不胜感激,谢谢!
【问题讨论】:
-
即使没有扩展,PostgreSQL 也能够毫无问题地处理转换。我尝试了像
select ('2014-12-10T12:00:14+07:00'::timestamp with time zone) at time zone 'Europe/Berlin'这样的 PG 9.6 命令,它可以工作。 PostgreSQL 在时区表中有用于应用夏令时规则的标志。所以我会先尝试标准方式。 -
@JosMac 当然,这是正确的做法。但由于我不知道城市,因此 +xx -> 大陆/城市关系,我需要自己进行翻译,因为 DST 是一个要求......
标签: c postgresql datetime sqldatatypes