关于时区:PostgreSQL中的本地时区偏移量

Local time zone offset in PostgreSQL

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

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

1
SELECT age(now() at TIME zone 'UTC', now());

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

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


1
SELECT  current_setting('TIMEZONE')

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

你的解决方案很好。


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

1
SELECT EXTRACT( timezone FROM now() );