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);                    
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

 對比10

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);                    
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

  

從此處可以看到:

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

結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM