正確答案:C
使用TIMESTAMP WITH LOCAL TIME ZONE資料型別,使用者插入資料時,oracle將會把使用者的資料結合使用者session的時區資訊自動換算成資料庫設定的時區的時間進行儲存,當使用者檢視資訊時,oracle將會把時間結合使用者session的時區資訊自動換算成該時區的時間。
本題資料庫時區是8:00 使用者時區是5:00
當使用者執行INSERT INTO new_order VALUES(1, TIMESTAMP '2007-05-10 6:00:00 5:00')時,先將帶時區的timestamp計算成
session時區的timestamp,然後oracle自動將時區換算成資料庫的8:00時區,記為2007-05-10 3:00:00
在New York的使用者檢視的時候,oracle會再次自動換算到當地時間2007-05-10 6:00:00
在San Francisco的使用者檢視的時候,oracle會自動換算到當地時間2007-05-10 3:00:00
with local timezone顯示的時候已經自動轉換到session時區,所以是不會顯示出時區資訊的。
選項A. 在New York的使用者檢視記錄,應該顯示為2007-05-10 6:00:00
選項B. timestamp with local time zone已經根據session時區轉換,所以不會再顯示時區資訊
選項C正確. 在San Francisco的使用者檢視的時候,oracle會自動換算到當地時間2007-05-10 3:00:00
選項D. timestamp with local time zone已經根據session時區轉換,所以不會再顯示時區資訊
測試如下:
(1)、建立表
gyj@OCM> CREATE TABLE new_order
2 (orderno NUMBER(4),
3 booking_date TIMESTAMP WITH LOCAL TIME ZONE);
(2)插入記錄
gyj@OCM> INSERT INTO new_order
2 VALUES(1,TIMESTAMP '007-05-10 6:00:00 -5:00');
1 row created.
gyj@OCM> COMMIT;
Commit complete.
(3)查詢New York where the time zone is -5:00
gyj@OCM> ALTER SESSION SET TIME_ZONE='-5:00';
Session altered.
gyj@OCM> select * from new_order;
ORDERNO BOOKING_DATE
---------- ---------------------------------------------------------------------------
1 10-MAY-07 06.00.00.000000 AM
(4)查詢San Francisco where the time zone is -8:00
gyj@OCM> ALTER SESSION SET TIME_ZONE='-8:00';
Session altered.
ggyj@OCM> select * from new_order;
ORDERNO BOOKING_DATE
---------- ---------------------------------------------------------------------------
1 10-MAY-07 03.00.00.000000 AM
QQ:252803295
學習交流QQ群:
DSI&Core Search Ⅰ 群:127149411(技術:已滿)
DSI&Core Search Ⅱ 群:177089463(技術:未滿)
DSI&Core Search Ⅲ 群:284596437(技術:未滿)
DSI&Core Search Ⅳ 群:192136702(技術:未滿)
DSI&Core Search Ⅴ 群:285030382(閒聊:未滿)
MAIL:oracledba_cn@hotmail.com
BLOG: http://blog.csdn.net/guoyjoe
WEIBO:http://weibo.com/guoyJoe0218
ITPUB: http://www.itpub.net/space-uid-28460966.html
OCM: http://education.oracle.com/education/otn/YGuo.HTM