本文介绍dbtimezone的使用场景。

背景信息

timestamp at time zone dbtimezone中的dbtimezone在PolarDB O引擎中不支持。
SQL> SELECT timestamp '1970-01-01 0:0:0 -0:0' at time zone dbtimezone FROM dual;
TIMESTAMP'1970-01-010:0:0-0:0'ATTIMEZONEDBTIMEZONE
---------------------------------------------------------------------------
01-JAN-70 12.00.00.000000000 AM +00:00
SQL> 
SQL>  SELECT CURRENT_TIMESTAMP  FROM dual;
CURRENT_TIMESTAMP
---------------------------------------------------------------------------
04-AUG-20 06.04.42.125059 PM +08:00

解决方案

建议依据Oracle数据库中dbtimezone设置修改为具体的时区值(如:+00:00)。PolarDB的时区可以依据timezone参数进行修改,可以在server级调整,也可以在session级调整。
van=> set timezone='+08:00';
SET
van=> select current_timestamp;
        current_timestamp         
---------------------------------- 
04-AUG-20 02:03:27.686021 -08:00
(1 row)
van=> set timezone='UTC';
SET
van=> select current_timestamp;
        current_timestamp
         ----------------------------------
 04-AUG-20 10:03:49.071727 +00:00
(1 row)

详情请参见https://www.postgresql.org/docs/11/functions-datetime.html