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

开始

从网络学习文章:http://blog.csdn.net/zhangmenghao1983/article/details/5185591

我自己的实验:

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就比较重要了。

结束

你可能感兴趣的:(Timestamp)