【发布时间】:2015-03-28 19:25:15
【问题描述】:
我想获取当前时区名称。
我已经实现的是通过以下方式获得utc_offset / 时区缩写:
SELECT * FROM pg_timezone_names WHERE abbrev = current_setting('TIMEZONE')
这给了我这个时区的所有大陆/首都组合,但不是确切的timezone。例如我得到:
Europe/Amsterdam
Europe/Berlin
服务器在Berlin,我想获取服务器的时区名称。
我对@987654327@ 的问题是它始终是UTC+01:00,而不是DST iirc。
【问题讨论】:
-
柏林和阿姆斯特丹的正确时区名称是欧洲中部时间 (CET)。一般来说,时区名称和缩写没有很好的定义;尽管有 ISO 标准,但许多国家/地区使用自己的定义。 PostgreSQL 支持也不完善,详情请见postgresql.org/docs/9.4/static/datetime-config-files.html。
-
在 pg_timezone_names 表中,CET 被定义为缩写,例如“Europe/Berlin”作为名称。我需要名称而不是缩写。
-
我在之前的评论中提供的链接向您展示了如何编辑文件以提供所需的内容。这是最好的。
-
所以 postgres 无法告诉我我是在“欧洲/柏林”还是“欧洲/阿姆斯特丹”,只是我在 CET 时区?
-
你能编辑你的问题并定义“我在”吗?服务器(通常)位于固定位置,时区取自操作系统或配置文件。 tz 名称与服务器一样固定。那么您确实想要服务器的时区名称还是数据库中数据的时区名称?
标签: postgresql datetime timezone