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