zoukankan      html  css  js  c++  java
  • Oracle 时区(TimeZone ) 数据类型

    不 同数据类型的区别

    使用 DBTimeZone 察看数据库所在的时区

    SQL> select dbtimezone from dual;

    DBTIMEZONE

    ----------

    +08:00

    找2个典型的美国时区

    SQL> select tz_offset('US/Eastern'),tz_offset('US/Mountain') from dual;

    TZ_OFFSET('US/EASTERN') TZ_OFFSET('US/MOUNTAIN')

    ----------------------- ------------------------

    -05:00                  -07:00

    建立表,包含不同类型的三个column

    create table tstz(ts timestamp, tstz timestamp with time zone, tsltz timestamp with local time zone);

    insert into tstz values(systimestamp,systimestamp,systimestamp);

    commit

     
    下面构造一个场景,用三个不同的时区的session来查询同样的数据

    SQL>

    SQL> alter session set NLS_TIMESTAMP_TZ_FORMAT = 'yyyy/mm/dd hh24:mi:ssxff TZH:TZM';

    SQL> alter session set NLS_TIMESTAMP_FORMAT = 'yyyy/mm/dd hh24:mi:ssxff';

    使用 SessionTimeZone 察看当前session的时区信息

    SQL> select sessiontimezone from dual;

    SESSIONTIMEZONE

    ---------------------------------------------------------------------------

    +08:00

    SQL> select * from tstz;

    TS                                                TSTZ                                              TSLTZ  +08:00

    ------------------------------------------------- ------------------------------------------------- -------------------------------------------------

    2008/03/29 10:14:10.774754                        2008/03/29 10:14:10.774754 +08:00                 2008/03/29 10:14:10.774754

    SQL> alter session set time_zone = 'US/Mountain';

    SQL> select * from tstz;

    TS                                                TSTZ                                              TSLTZ  -07:00

    ------------------------------------------------- ------------------------------------------------- -------------------------------------------------

    2008/03/29 10:14:10.774754                        2008/03/29 10:14:10.774754 +08:00                 2008/03/28 19:14:10.774754

    SQL> alter session set time_zone = 'US/Eastern';

    SQL> select * from tstz;

    TS                                                TSTZ                                              TSLTZ  -05:00

    ------------------------------------------------- ------------------------------------------------- -------------------------------------------------

    2008/03/29 10:14:10.774754                        2008/03/29 10:14:10.774754 +08:00                 2008/03/28 21:14:10.774754

    从 高亮部分可以发现

    timestamp with time zone 保存了insert的时区, 并且不 论在什么地方查询,显示结果都是一致的

    timestamp with local time zone 保存的是一个内部的时区信息, 在不同 时区进行查询,都会自动转换成当前时区进行显示。

    因为修改了session的时 区信息,所以系统时区和当前session时区不同

    SQL> select systimestamp, current_timestamp, localtimestamp from dual;

    SYSTIMESTAMP                                      CURRENT_TIMESTAMP                                 LOCALTIMESTAMP

    ------------------------------------------------- ------------------------------------------------- -------------------------------------------------

    2008/03/29 15:59:37.400640 +08:00                 2008/03/29 02:59:37.400646 -05:00                 2008/03/29 02:59:37.400646

    作者:wait4friend
    Weibo:@wait4friend
    Twitter:@wait4friend
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    可持久化+Trie || BZOJ 3261最大异或和 || Luogu P4735 最大异或和
    费用流+SPFA ||Luogu P3381【模板】最小费用最大流
    费用流+SPFA ||【模板】最小费用最大流
    Dinic二分图匹配 || Luogu P3386
    Dinic最大流 || Luogu P3376 【模板】网络最大流
    fhq_treap || BZOJ1861: [Zjoi2006]Book 书架 || Luogu P2596 [ZJOI2006]书架
    fhq_treap || BZOJ 3223: Tyvj 1729 文艺平衡树 || Luogu P3391 【模板】文艺平衡树(Splay)
    fhq_treap || BZOJ 3224: Tyvj 1728 普通平衡树 || Luogu P3369 【模板】普通平衡树
    Manacher || BZOJ 2342: [Shoi2011]双倍回文 || Luogu P4287 [SHOI2011]双倍回文
    Manacher || P4555 [国家集训队]最长双回文串 || BZOJ 2565: 最长双回文串
  • 原文地址:https://www.cnblogs.com/wait4friend/p/2345329.html
Copyright © 2011-2022 走看看