zoukankan      html  css  js  c++  java
  • 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分

  • 相关阅读:
    [ZJOI 2012]数列
    [JSOI 2011]柠檬
    sonar错误及修改方案
    mysql 查询该字段不包含中文
    service 事务
    mysql 不等于和null
    java文件编译为class文件
    主,副时间排序
    MySQL 按首字母排序
    excle导入
  • 原文地址:https://www.cnblogs.com/einyboy/p/2624895.html
Copyright © 2011-2022 走看看