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() ); |