首页 > 解决方案 > postgres 中的`set timezone to 'EEST'` 给了我错误。为什么?

问题描述

在 postgres 中,我可以设置和读取时区:

dev=> set timezone to 'UTC';
SET
dev=> select current_setting( 'timezone' );
 current_setting 
-----------------
 UTC
(1 row)

有时EEST区:

select exists( select 1 from pg_timezone_names where abbrev = 'EEST' );
 exists 
--------
 t
(1 row)

为什么我无法设置?

dev=> set timezone to 'EEST';
ERROR:  invalid value for parameter "TimeZone": "EEST"

标签: postgresqltimezone

解决方案


感谢<xocolatl>.

错误是因为pg_timezone_names没有名称的时区EEST,但有UTC名称的时区:

select * from pg_timezone_names where name = 'UTC';
 name | abbrev | utc_offset | is_dst 
------+--------+------------+--------
 UTC  | UTC    | 00:00:00   | f
(1 row)

推荐阅读