在 postgres 中引用时区

Referencing timezones in postgres

我需要在 Postgres 9.3 中为用户存储时区。

一个合乎逻辑的解决方案是创建一个 table 时区名称和偏移量,然后在我的用户 table 中存储一个 FK 引用。

但是,postgres 已经有一个视图 pg_timezone_names,它显示 Postgres 知道的时区名称。仅引用这些名称似乎是有意义的,而不是创建我自己的 table 完全相同的名称。但是,pg_timezone_names 是一个视图,因此不能被引用。

是否有一个系统 table 保存这些可以安全引用的时区名称,或者这样做只是一个坏主意?

比好更坏 - 时区列表重复实现 - 一些时区可以删除,一些是新的。

而不是 FK 引用,您可能应该只是反规范化。使用IANA time zone identifier, such as 'America/Los_Angeles'. These IDs are used by Postgres存储用户时区的字符串名称,也可以与其他系统互换。

请记住,时区不能仅由偏移量表示。在 the timezone tag wiki 的 "Time Zone != Offset" 部分阅读更多内容。