Oracle中的 timestamp 和 timestamp with time zone, timestamp with local time zone

简介:


我自己的实验:

复制代码

SQL> select dbtimezone, sessiontimezone from dual;                    
                    
DBTIME                    
------                    
SESSIONTIMEZONE                    
---------------------------------------------------------------------------                    
+00:00                    
-08:00                    
                    
                    
SQL>                     
                    
                    
                    
SQL> create table timetest(tme date,tmestp timestamp(3), tmestp_tz timestamp(3) with time zone, tmpstp_tzl timestamp(3) with local time zone);                    
                    
Table created.                    
                    
SQL>                     
                    
                    
                    
SQL> insert into timetest values(sysdate,sysdate,sysdate,sysdate);                    
                    
1 row created.                    
                    
SQL> select * from timetest;                    
                    
TME                    
---------                    
TMESTP                    
---------------------------------------------------------------------------                    
TMESTP_TZ                    
---------------------------------------------------------------------------                    
TMPSTP_TZL                    
---------------------------------------------------------------------------                    
11-Nov-12                    
11-NOV-12 11.56.27.000 PM                    
11-NOV-12 11.56.27.000 PM -08:00                    
11-NOV-12 11.56.27.000 PM                    

复制代码

对比:

复制代码

SQL> alter session set time_zone='+10:00';

Session altered.

SQL> select * from timetest;

TME
---------
TMESTP
---------------------------------------------------------------------------
TMESTP_TZ
---------------------------------------------------------------------------
TMPSTP_TZL
---------------------------------------------------------------------------
11-Nov-12
11-NOV-12 11.56.27.000 PM
11-NOV-12 11.56.27.000 PM -08:00
12-NOV-12 05.56.27.000 PM

复制代码

从此处可以看到:

timestamp with time zone 表达的是 针对 标准时区(格林尼治时间)的差。

timestamp with local time zone 表达的是 ,根据你当前所处时区,变化你和格林尼治时间的差。

如果过去相对标准时区 -8 ,那么移动到+10 时区的时候,需要加:10-(-8)=18 ,

就是 夜里11点56分+18小时 -->夜11点+1点+17小时+56分,-->凌晨过17小时+56分 -->凌晨+12小时+5小时+56分,

就是下午5小时56分。

那么,在跨越多时区的系统里,timestamp with timezone 或者 timestamp with local timezone就比较重要了。

结束





本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/11/12/2766526.html,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
在YMP校验过程中,从yashandb同步至Oracle的数据出现timestamp(0)字段不一致问题。原因是yashandb的timestamp(x)存储为固定6位小数,而Oracle的timestamp(0)无小数位,同步时会截断yashandb的6位小数,导致数据差异。受影响版本:yashandb 23.2.7.101、YMP 23.3.1.3、YDS联调版本。此问题会导致YMP校验数据内容不一致。
|
1月前
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
|
1月前
|
存储 Oracle 关系型数据库
【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致
【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致
|
Oracle 关系型数据库
oracle timestamp相减 计算差多少秒
oracle timestamp相减 计算差多少秒
342 0
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库
oracle date 和 timestamp区别
在今天的工作中,学到了以下几个知识点: 一、date和timestamp 的区别      date类型是Oracle常用的日期型变量,他的时间间隔是秒。两个日期型相减得到是两个时间的间隔,注意单位是“天”。
1673 0
|
存储 Oracle 关系型数据库
ORACLE DATE类型和TIMESTAMP类型DUMP换算
date 类型: 十进制: 120,115,8,14,14,46,46  7 BYTE 120  世纪字节 +100存储 115  年字节   +100存储 8    月字节   源数据存储 14   日字节   源数据存储 14   小时字节 +1...
886 0