timestamp with local time zone类型和timestamp with time zone

简介:

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分



本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/archive/2012/08/06/2624895.html,如需转载请自行联系原作者。

目录
相关文章
|
5月前
|
Java 数据库连接 数据库
The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized or represents more than one time zone
The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized or represents more than one time zone
33 0
|
Java 关系型数据库 MySQL
The server time zone value ‘?й???’ is unrecognized or represents more than one time zone. You must c
报错信息如下:The server time zone value ‘?й???’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
80 0
|
11月前
|
关系型数据库 MySQL PostgreSQL
PSQLException: 错误: 函数 date_format(timestamp without time zone, unknown) 不存在
PSQLException: 错误: 函数 date_format(timestamp without time zone, unknown) 不存在
261 0
|
11月前
Time
Time
148 0
|
关系型数据库 MySQL Java
超详解The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one time zone
超详解The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one time zone
564 0
|
数据库连接 数据库
The server time zone value ‘‘ is unrecognized or represents more than one time zone.
The server time zone value ‘‘ is unrecognized or represents more than one time zone.
|
关系型数据库 MySQL Java
The server time zone value '?й???????' is unrecognized or represents more than one time zone.
The server time zone value '?й???????' is unrecognized or represents more than one time zone.
83 0
The server time zone value '?й???????' is unrecognized or represents more than one time zone.
|
存储 关系型数据库 MySQL
MySQL中date、datetime、timestamp、time、year的区别
MySQL中date、datetime、timestamp、time、year的区别
164 0
|
数据库
timestamp的两个属性:CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP
timestamp的两个属性:CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP
1451 0