timestamp with local time zone类型和timestamp with time zone
2012-08-06 12:00
411 查看
timestamp with local time zone 和timesatamp with time zone的最大区别就是,前者在用户提交时间给数据库的时,该类型会转换成数据库的时区来保存数据,即数据库保存的时间是数据库本地时区,当别的用户访问数据库时oracle会自动将该时间转换成当前客户端的时间。
例子:
1、创建表
CREATE TABLE TIMESTAMP_TEST(
TIME DATE,
TIMESTP TIMESTAMP(3),
TIMESTP_TZ TIMESTAMP(3) WITH TIME ZONE,
TIMESTP_LTZ TIMESTAMP(3) WITH LOCAL TIME ZONE)
2、添加数据
INSERT INTO TIMESTAMP_TEST VALUES(SYSDATE,SYSDATE,SYSDATE,SYSDATE);
commit;
3、查询dbtimezone和sessiontimezone的值
select dbtimezone ,sessiontimezone from dual;
DBTIME
------
SESSIONTIMEZONE
---------------------------------------------------------------------------
+00:00
+08:00
4、查看数据的值
SQL> SELECT * FROM TIMESTAMP_TEST;
TIME
--------------
TIMESTP
--------------------------------------------------------------
TIMESTP_TZ
--------------------------------------------------------------
TIMESTP_LTZ
--------------------------------------------------------------
02-6月 -10
02-6月 -10 11.21.10.000 上午
02-6月 -10 11.21.10.000 上午 +08:00
02-6月 -10 11.21.10.000 上午
5、修改会话的time_zone值
alter session set time_zone='+10:00';
6、查看结果
SQL> SELECT * FROM TIMESTAMP_TEST;
TIME
--------------
TIMESTP
-----------------------------------------------------
TIMESTP_TZ
-----------------------------------------------------
TIMESTP_LTZ
-----------------------------------------------------
02-6月 -10
02-6月 -10 11.21.10.000 上午
02-6月 -10 11.21.10.000 上午 +08:00
02-6月 -10 01.21.10.000 下午
7、从上面的实验可以看出二者的去区别,当session的时区由8变为10是,时间增加两个小时
再向表中添加一条记录
insert into TIMESTAMP_TEST values(
TO_TIMESTAMP_TZ('2010-12-01 23:12:56.788 -12:44', 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'),
TO_TIMESTAMP_TZ('2010-12-01 23:12:56.788-12:44', 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'),
TO_TIMESTAMP_TZ('2010-12-01 23:12:56.788 -12:44', 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'),
TO_TIMESTAMP_TZ('2010-12-0123:12:56.788 -12:44', 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'));
(tzh:时区中的小时,tzm:时区中的分)
在这里我指定了数据添加时的时区为-12:44,查询结果为
TIME
--------------
TIMESTP
---------------------------------------------------------------------------
TIMESTP_TZ
---------------------------------------------------------------------------
TIMESTP_LTZ
---------------------------------------------------------------------------
01-12月-10
01-12月-10 11.12.56.788 下午
01-12月-10 11.12.56.788 下午 -12:44
02-12月-10 09.56.56.788 下午
TIME
--------------
TIMESTP
---------------------------------------------------------------------------
TIMESTP_TZ
---------------------------------------------------------------------------
TIMESTP_LTZ
---------------------------------------------------------------------------
02-6月 -10
02-6月 -10 11.21.10.000 上午
02-6月 -10 11.21.10.000 上午 +08:00
02-6月 -10 01.21.10.000 下午
由于当前用户的时区是+10:00,添加数据时的指定时区死-12:44,二者时间相差22小时44分
例子:
1、创建表
CREATE TABLE TIMESTAMP_TEST(
TIME DATE,
TIMESTP TIMESTAMP(3),
TIMESTP_TZ TIMESTAMP(3) WITH TIME ZONE,
TIMESTP_LTZ TIMESTAMP(3) WITH LOCAL TIME ZONE)
2、添加数据
INSERT INTO TIMESTAMP_TEST VALUES(SYSDATE,SYSDATE,SYSDATE,SYSDATE);
commit;
3、查询dbtimezone和sessiontimezone的值
select dbtimezone ,sessiontimezone from dual;
DBTIME
------
SESSIONTIMEZONE
---------------------------------------------------------------------------
+00:00
+08:00
4、查看数据的值
SQL> SELECT * FROM TIMESTAMP_TEST;
TIME
--------------
TIMESTP
--------------------------------------------------------------
TIMESTP_TZ
--------------------------------------------------------------
TIMESTP_LTZ
--------------------------------------------------------------
02-6月 -10
02-6月 -10 11.21.10.000 上午
02-6月 -10 11.21.10.000 上午 +08:00
02-6月 -10 11.21.10.000 上午
5、修改会话的time_zone值
alter session set time_zone='+10:00';
6、查看结果
SQL> SELECT * FROM TIMESTAMP_TEST;
TIME
--------------
TIMESTP
-----------------------------------------------------
TIMESTP_TZ
-----------------------------------------------------
TIMESTP_LTZ
-----------------------------------------------------
02-6月 -10
02-6月 -10 11.21.10.000 上午
02-6月 -10 11.21.10.000 上午 +08:00
02-6月 -10 01.21.10.000 下午
7、从上面的实验可以看出二者的去区别,当session的时区由8变为10是,时间增加两个小时
再向表中添加一条记录
insert into TIMESTAMP_TEST values(
TO_TIMESTAMP_TZ('2010-12-01 23:12:56.788 -12:44', 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'),
TO_TIMESTAMP_TZ('2010-12-01 23:12:56.788-12:44', 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'),
TO_TIMESTAMP_TZ('2010-12-01 23:12:56.788 -12:44', 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'),
TO_TIMESTAMP_TZ('2010-12-0123:12:56.788 -12:44', 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'));
(tzh:时区中的小时,tzm:时区中的分)
在这里我指定了数据添加时的时区为-12:44,查询结果为
TIME
--------------
TIMESTP
---------------------------------------------------------------------------
TIMESTP_TZ
---------------------------------------------------------------------------
TIMESTP_LTZ
---------------------------------------------------------------------------
01-12月-10
01-12月-10 11.12.56.788 下午
01-12月-10 11.12.56.788 下午 -12:44
02-12月-10 09.56.56.788 下午
TIME
--------------
TIMESTP
---------------------------------------------------------------------------
TIMESTP_TZ
---------------------------------------------------------------------------
TIMESTP_LTZ
---------------------------------------------------------------------------
02-6月 -10
02-6月 -10 11.21.10.000 上午
02-6月 -10 11.21.10.000 上午 +08:00
02-6月 -10 01.21.10.000 下午
由于当前用户的时区是+10:00,添加数据时的指定时区死-12:44,二者时间相差22小时44分
相关文章推荐
- TIMESTAMP WITH TIME ZONE与TIMESTAMP WITH LOCAL TIME ZONE数据类型
- timestamp with local time zone类型和timestamp with time zone
- timestamp with time zone 和 timestamp with local time zone
- JAVA获取数据库TIMESTAMP(6) WITH LOCAL TIME ZONE
- [每日一题] OCP1z0-047 :2013-08-26 TIMESTAMP WITH LOCAL TIME ZONE....................112
- ocp-047-30 timestamp with local time zone 和timesatamp with time zone
- timestamp with local time zone 和 timesatamp with time zone的区别
- Oracle TIMESTAMP WITH TIME ZONE类型
- TIMESTAMP WITH TIME ZONE &TIMESTAMP WITH LOCAL TIME ZONE
- Oracle中的 timestamp 和 timestamp with time zone, timestamp with local time zone
- ORA-30078: partition bound must be TIME/TIMESTAMP WITH TIME ZONE literals
- INTERVAL YEAR TO MONTH和TIMESTAMP WITH TIME ZONE 等
- jdbc-mysql基础 java.util.sql.timestamp与mysql中datatime类型相对应可以相互访问
- AppFuse中日期时间(Date,Timestamp,Time)类型问题
- MySQL里面的时间类型datetime,date,timestamp,time和year(转)
- Oracle TTS ORA-39322: Cannot use transportable tablespace with different timezone version 说明
- Tips for working with time zone in flex app
- Local time zone must be set--see zic manual page 2017
- Oracle TTS ORA-39322: Cannot use transportable tablespace with different timezone version 说明
- Oracle TTS ORA-39322: Cannot use transportable tablespace with different timezone version 说明