使用C扩展名在Postgres DB中存储带时区的时间戳?

时间:2017-06-17 13:05:30

标签: c postgresql datetime sqldatatypes

简而言之,在输入我的Postgres数据库时,我有一个格式为“2014-12-10T12:00:14 + 07:00”的时间戳,我想使用'timestampandtz'Postgres C扩展名({ {3}}),但我不知道如何处理确定时区的问题。

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

问题是,我需要从“+07:00”以某种方式拉出城市,因为我确实需要夏令时解析。 此外,我知道这些时间戳只来自一个国家,因此可以根据此确定“@ Continent / City”。

非常感谢任何关于如何应对这一挑战的POV,谢谢!

1 个答案:

答案 0 :(得分:1)

我担心你运气不好。无法将+07:00之类的时间偏移量自动转换为US/Eastern这样的时区。

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

所以你必须自己想出一个翻译,例如:如果您知道具有特定时间偏移的所有数据属于哪个时区。