本文介绍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。