gpt4 book ai didi

sql - 如何在所有 Postgres 版本中获取服务器操作系统本地时间

转载 作者:行者123 更新时间:2023-11-29 12:25:47 24 4
gpt4 key购买 nike

如何在每个 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'

如何在使用默认 postgresql.conf 文件的情况下在 9.5 中获取服务器本地时间?

看起来服务器没有使用 9.5 中的操作系统设置

如何强制 9.5 从操作系统询问时区并返回该时区的时间?

最佳答案

要求 time zone你想要:

select current_time at time zone 'brt';
timezone
--------------------
08:26:16.778448-03

如果你需要一个字符串:

select to_char(current_timestamp at time zone 'brt', 'HH24:MI:SS');
to_char
----------
08:32:07

请注意 to_char函数不接受 time 类型。请改用 timestamp

从 shell 获取操作系统本地时区。在 Linux 中:

$ date +%Z
BRT

在 psql 中:

=> \! date +%Z
BRT

如果客户端有psql:

psql -c "\! date +%Z" --host localhost --dbname=cpn --no-password
BRT

有必要.pgpass文件以避免提供密码。

关于sql - 如何在所有 Postgres 版本中获取服务器操作系统本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38502246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com