【发布时间】:2016-11-24 22:17:42
【问题描述】:
如何在每个 Postgres 版本中以 char(8) 格式 hh:mm:ss 获取服务器本地时间。
在 9.1 中它可以工作:
select current_time::char(8)
返回正确的当地时间 13:46:00
在 9.5 中,它返回 3 小时不同的时间:
10:46:00
选择 current_time,version() 返回
"10:48:40.181735+00";"PostgreSQL 9.5.2, compiled by Visual C++ build 1800, 32-bit"
和
"13:48:51.775138+03";"PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Debian 4.4.5-8) 4.4.5, 64-bit"
更新
两台服务器都使用默认的 postgres.conf 时间设置。 postgres.conf 不包含时区设置。
在 9.5 Windows 10 中包含
#timezone = 'GMT'
#timezone_abbreviations = 'Default'
在 9.1 Debian 中包含
#timezone = '(defaults to server environment setting)'
#timezone_abbreviations = 'Default'
9.5 使用默认 postgresql.conf 文件时如何获取服务器本地时间?
看起来服务器不使用 9.5 中的操作系统设置
如何强制 9.5 向操作系统询问时区并返回该时区的时间?
【问题讨论】:
-
您能否检查这两个版本之间的时区是否存在差异?我相信这会在 postgresql.conf 文件中eureka.ykyuen.info/2014/08/15/postgresql-set-and-get-timezone
-
我用时区信息更新了问题。 9.5 使用默认 postgresql.conf 文件时如何获取服务器本地时间?
-
“当使用默认 postgresql.conf 文件时”是什么意思?你不能在 postgresql.conf 中更改时区设置吗?
-
我正在寻找一种方法来创建适用于任何 postgresql.conf 设置的应用程序。
set timezone='gmt-3'; select current_time::char(8)有效,但它使用硬编码的时区。如何用服务器操作系统时区替换gmt-3? -
这个要求有点奇怪。通常使用客户端时区。为什么是服务器一?你能详细说明一下吗?
标签: sql postgresql