注册
达梦数据库时区设置
专栏/金的探索记录/ 文章详情 /

达梦数据库时区设置

2020/12/02 3398 3 0
摘要 达梦数据库支持两种时区,数据库时区和会话时区。

达梦数据库支持两种时区,数据库时区会话时区。其中数据库的时区设置在初始化实现时通过 TIME_ZONE 指定,后续不可更改。而会话时区则读的本地时区,并且可设置会话时区,但只针对本会话有效。如无特殊需求,所有时区均设置为东 8 区 (+08、480)。

设置会话时区:

例:设置当前会话时区为‘+8:00’

SET TIME ZONE '+8:00';

例:设置当前会话时区为服务器所在地时区(注:服务器时区,取服务器所在机器的操作系统时区,非初始化实例时指定的时区)。

SET TIME ZONE LOCAL;

例:查看会话时区

SELECT SESS_ID,CLNT_HOST,TIME_ZONE FROM V$SESSIONS;

例:查看数据库时区

SELECT SYSTIMESTAMP;

本地时区,对于达梦数据库来说,是指客户端机上的本地时区。所谓本地时区,首先读取客户端机器上的 dm_svc.conf 中的 TIME_ZONE,如若 dm_svc.conf 不存在或没有配置TIME_ZONE,则读取客户端机器的操作系统时区。下述我们用例子来讲述本地时区对读取数据库时间的影响:

  1. 环境配置

数据库服务器 A,操作系统时区:+08,初始化数据库设置时区:+07。

客户端机器 B,操作系统时区:-04,dm_svc.conf 配置时区:+06。

客户端机器 C,操作系统时区:+08,没有配置:dm_svc.conf。

  1. 建表,并插入数据
create table test(c1 timestamp,c2 timestamp with time zone,c3 timestamp with local time zone); insert into test values(timestamp '2012-12-12 12:12:12 +08',timestamp '2012-12-12 12:12:12 +08',timestamp '2012-12-12 12:12:12 +08'); commit;
  1. 通过客户端B查询表数据如下

image.png

  1. 通过客户端C查询表数据如下:

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服