正确答案: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