6、TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE的實踐理解

yyycxhtx發表於2007-07-31
TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE的實踐理解.TIMESTAMP WITH LOCAL TIME ZONE會隨著使用者所在時區(SESSIONTIMEZONE)而變化,而TIMESTAMP WITH TIME ZONE則不隨使用者所在時區的變化而變,簡單的說,這兩個時間型別的參照時間不同,一個是參照使用者的時區,一個是參照資料庫的時區。[@more@]

實踐過程:
1.建實踐用表:

SQL> DROP TABLE TIMESTAMP_TEST;

表已刪除。

SQL> CREATE TABLE TIMESTAMP_TEST(
2 TIME DATE,
3 TIMESTP TIMESTAMP(3),
4 TIMESTP_TZ TIMESTAMP(3) WITH TIME ZONE,
5 TIMESTP_LTZ TIMESTAMP(3) WITH LOCAL TIME ZONE);

表已建立。

2.查詢DBTIMEZONE和SESSIONTIMEZONE設定:
SQL> SELECT DBTIMEZONE,SESSIONTIMEZONE FROM DUAL;

DBTIME
------
SESSIONTIMEZONE
---------------------------------------------------------------------------
+00:00
+08:00

3.插入測試資料,並確認結果:SQL> INSERT INTO TIMESTAMP_TEST VALUES(SYSDATE,SYSDATE,SYSDATE,SYSDATE);

已建立 1 行。

SQL> COMMIT;

提交完成。

SQL> SELECT * FROM TIMESTAMP_TEST;

TIME
--------------
TIMESTP
---------------------------------------------------------------------------
TIMESTP_TZ
---------------------------------------------------------------------------
TIMESTP_LTZ
---------------------------------------------------------------------------
02-10月-06
02-10月-06 11.51.43.000 上午
02-10月-06 11.51.43.000 上午 +08:00
02-10月-06 11.51.43.000 上午
4.修改SESSION的TIME_ZONE:SQL> ALTER SESSION SET TIME_ZONE='+10:00';

會話已更改。

SQL> SELECT * FROM TIMESTAMP_TEST;

TIME
--------------
TIMESTP
---------------------------------------------------------------------------
TIMESTP_TZ
---------------------------------------------------------------------------
TIMESTP_LTZ
---------------------------------------------------------------------------
02-10月-06
02-10月-06 11.51.43.000 上午
02-10月-06 11.51.43.000 上午 +08:00
02-10月-06 01.51.43.000 下午

結論:根據實驗結果,TIMESTAMP WITH LOCAL TIME ZONE會隨著使用者所在時區(SESSIONTIMEZONE)而變化,而TIMESTAMP WITH TIME ZONE則不隨使用者所在時區的變化而變,簡單的說,這兩個時間型別的參照時間不同,一個是參照使用者的時區,一個是參照資料庫的時區。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/248644/viewspace-929678/,如需轉載,請註明出處,否則將追究法律責任。

相關文章