zoukankan      html  css  js  c++  java
  • Oracle 时区(TimeZone ) DST

    Daylight Savings Time (DST)

    指 定一个时区的时候,可以使用数字(-05:00),缩写(EST)或者地区名称(US/Eastern)。 在多数情况下,它们的效果是一样的。但是在DST的处理过 程中,如果使用地区名称来指定时区,ORACLE会自动进 行DST的一些转换。  举 例来说,2006-04-02 2:00 AM是US/Eastern进 行DST切换的时刻(http://www.timetemperature.com/tzus/daylight_saving_time.shtml)。在实行DST的时期,US/Eastern的 时区数字显示为 -04:00,在非DST时期,数字显示为 -05:00

    下 面分别用地区名称(US/Eastern)和数字(-05:00)来指定时区,测试自动DST转换功能

    select to_timestamp_tz('04/02/2006 01:00:00 US/Eastern',

                           'mm/dd/yyyy hh24:mi:ss tzr') +

           to_dsinterval('0 01:00:00')

      from dual;

    TO_TIMESTAMP_TZ('04/02/200601:

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

    2006/04/02 03:00:00.000000000 -04:00

    select to_timestamp_tz('04/02/2006 01:00:00 EST',

                           'mm/dd/yyyy hh24:mi:ss tzr') +

           to_dsinterval('0 01:00:00')

      from dual;

    TO_TIMESTAMP_TZ('04/02/200601:

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

    2006/04/02 03:00:00.000000000 -04:00

    使 用地区名称(US/Eastern)或者缩写(EST), 自动进行了DST转 换。因为在DST,2006-04-02 1:59 AM之后就是03:00 AM了,并且时区数字显示为 -04:00。


     select to_timestamp_tz('04/02/2006 01:00:00 -05:00',

                           'mm/dd/yyyy hh24:mi:ss tzh:tzm') +

           to_dsinterval('0 01:00:00')

      from dual;

    TO_TIMESTAMP_TZ('04/02/200601:

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

    2006/04/02 02:00:00.000000000 -05:00

    使 用数字(-05:00),不会进行时区的转换,仍然是 -05:00 ,并且是02:00 AM。 说明这个运算中没有考虑DST的因素。

    DST中 容易犯的错误

    1. 如果想把一个字符串转换成 时间类型,就必须考虑“这是否是一个合法的时间?”,比如DST中 的2006-04-02 02:00 AM就是非法的时间

    select to_timestamp_tz('04/02/2006 02:00:00 US/Eastern',

                           'mm/dd/yyyy hh24:mi:ss tzr')

      from dual

    ORA-01878: specified field not found in datetime or interval 

    1. 在ORACLE Scheduler中,如果指定START_DATE的 时候没有明确指定时区,就会采用当前session的时 区。这个情况下,很可能就使用了数字形式的时区。在DST的 时候,系统不能自动进行转换,结果就差生了误差。解决办法是在指定START_DATE的时候明确的使用地区名称来标示时区
    作者:wait4friend
    Weibo:@wait4friend
    Twitter:@wait4friend
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    sql被注入,用友不能建账
    项目总帐金额翻倍
    1)123104科目的余额出现翻倍情况,经调数据库,期初余额已调平,但余额表中的数仍是未调平前的错误数。2)一月结账时提示有一科目119101的总账与个人明细账不平....
    尚有已全部暂估报销的单据未进行处理,不能进行12月的期末处理
    用友U8尚有已全部暂估报销的单据未进行处理,不能进行12月的期末处理
    用sql替换T6工作流中的操作员
    解决win7科迈登录报错RASRDP MODULE已停止工作
    sql2005 64 位 连接 sql2000 32位
    jquery选择器
    深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
  • 原文地址:https://www.cnblogs.com/wait4friend/p/2345463.html
Copyright © 2011-2022 走看看