达梦数据库支持两种时区,数据库时区和会话时区。其中数据库的时区设置在初始化实现时通过 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,则读取客户端机器的操作系统时区。下述我们用例子来讲述本地时区对读取数据库时间的影响:
数据库服务器 A,操作系统时区:+08,初始化数据库设置时区:+07。
客户端机器 B,操作系统时区:-04,dm_svc.conf 配置时区:+06。
客户端机器 C,操作系统时区:+08,没有配置:dm_svc.conf。
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;
文章
阅读量
获赞