加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Oracle中处理闰秒

发布时间:2020-12-12 15:13:36 所属栏目:百科 来源:网络整理
导读:今天晚上将有一个闰秒添加到时钟,在一天的最后一个小时的最后一分钟将有61秒. 2015-06-30 23:59:60 但是,Oracle只能在一分钟内支持最多60秒: TO_DATE( '2015-06-30 23:59:60','YYYY-MM-DD HH24:MI:SS' ) 错误与: ORA-01852: seconds must be between 0 and
今天晚上将有一个闰秒添加到时钟,在一天的最后一个小时的最后一分钟将有61秒.
2015-06-30 23:59:60

但是,Oracle只能在一分钟内支持最多60秒:

TO_DATE( '2015-06-30 23:59:60','YYYY-MM-DD HH24:MI:SS' )

错误与:

ORA-01852: seconds must be between 0 and 59

SELECT TO_DATE( '2015-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS' ) + INTERVAL '1' SECOND AS Incr_Second_Before,TO_DATE( '2015-07-01 00:00:00','YYYY-MM-DD HH24:MI:SS' ) - INTERVAL '1' SECOND AS Decr_Second_After
FROM   DUAL

给出输出:

|     INCR_SECOND_BEFORE |      DECR_SECOND_AFTER |
|------------------------|------------------------|
| July,01 2015 00:00:00 | June,30 2015 23:59:59 |

有没有办法在Oracle中处理闰秒?

从MOS-

Insert leap seconds into a timestamp column fails with ORA-01852 (Doc
ID 1553906.1)

APPLIES TO:

Oracle Database – Enterprise Edition – Version 8.1.7.4 and later

Oracle Database – Standard Edition – Version 8.1.7.4 and later

Information in this document applies to any platform.

SYMPTOMS:

An attempt to insert leap seconds into a timestamp column,fails with:
ORA-01852: seconds must be between 0 and 59

CAUSE

It is not possible to store >59 sec value in a date or timestamp
datatype

SOLUTION

To workaround this issue,the leap second record can be stored in a
varchar2 datatype instead e.g.

SQL> create table test (val number,t varchar2(30));

Table created.

SQL> insert into test values(123,'2012-06-30T23:59:60.000000Z');

1 row created.

不是最好的解决方案,而是唯一的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读