oracle时区学习

Oracle关于时间有四个类型。Datetimestamptimestamp with time zonetimestamp with local time zone

其中timestamp with local time zone保存了数据库时区。不同的客户端时区查询数据会造成不同结果。也就是说如果2台客户端一台时区是+800,另一台时区+1000。那么如果查询这种字段,+800的时间如果是1点,那么+1000的时间是3点。

Datetimestamp区别

     Timestamp精度更细了。

Timestamp timestamp with time zone区别

timestamp with time zoneTimestamp多了两位,用于存储时区,时区保存的是客户机的时区。而不是数据库的时区。

一、

做如下实验:select sessiontimezone,dbtimezone  from dual

数据库操作系统时区9:30。

 

Create table tz(a date,b timestamp,c timestamp with timze zone,d timestamp with local timze zone)

Insert into tz values(sysdate,sysdate,sysdate,sysdate)

 

 

现在从另一个客户端来查询数据。客户端时区

可以看出D这列时间向前了130小时

 

二、

然后再客户端插入一条记录

可以看出C字段的时区变了。也就是说保存的时区是客户端的时区。

 

三、

修改数据库服务器的操作系统时区(虽然对数据库没什么影响,但是重起数据库)

(利用客户端查询由于客户端的时区没有改变,所以数据的时间没有变)

四、

  修改数据库时区

Alter database set  time_zone=+1:00;

1 行出现错误:

ORA-30079: 当数据库有 TIMESTAMP WITH LOCAL TIME ZONE 列时不能变更数据库时区

提示,报错。

重新创建了tz表。

    更改数据库时区

然后重启数据库

时间和对应的时区并没有什么变化。

 

得出结论:当修改操作系统时区的时候,不会对数据库数据产生影响(是否会对数据库时区产生影响window不影响,linux需要测试)。如果需要修改数据库时区,那么如果有timestamp with local time zone这种类型就不会允许修改。如果不存在timestamp with local time zone,修改后并不会对数据产生影响。(因为timestamp with local time zone保存的是dbtimezone

参考文档:http://www.cnblogs.com/firstyi/archive/2007/09/24/903931.html

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9524377/viewspace-660903/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9524377/viewspace-660903/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值