PostgreSQL中的本地时区偏移量

Tim*_*imH 33 postgresql timezone

我的网络应用程序以UTC为单位存储所有时间戳,没有时区.我有一个shell/psql脚本,它返回最近登录的列表,我希望该脚本在服务器的本地时区显示登录时间(这可能因服务器的位置和夏令时而异).

要获得表示我的数据库服务器的时区和UTC之间的差异的间隔,我目前正在使用此hack:

SELECT age(now() at time zone 'UTC', now());
Run Code Online (Sandbox Code Playgroud)

这是有效的,但是有更简单的方法吗?

有一个名为"timezone"的服务器配置参数返回一个有效的时区字符串,但我认为不可能在查询中访问这些参数.(我想这是一个单独的问题,但是它的答案可以解决时区问题.)

Qua*_*noi 53

SELECT  current_setting('TIMEZONE')
Run Code Online (Sandbox Code Playgroud)

这可以在查询中使用,但是,这不会给出数字差异.

你的解决方案很好.

  • @TimH:正如我发现的那样,[时区缩写似乎优先] [http://stackoverflow.com/questions/12042506/time-zone-names-with-identical-properties-yield-different-result - 当施加到).远离模糊的时区名称,如"CET" - 它们将被解释为时区缩写,具有微妙的不同效果. (2认同)

sha*_*unc 8

为了得到整数秒的差异,我简单地使用了:

select extract( timezone from now() );
Run Code Online (Sandbox Code Playgroud)