programing

Oracle에서 윤초를 처리하는 방법

minimums 2023. 9. 15. 20:52
반응형

Oracle에서 윤초를 처리하는 방법

오늘 밤에는 시계에 1초의 도약이 추가될 것이고 하루의 마지막 시간에 61초가 있을 것입니다.

2015-06-30 23:59:60

그러나 Oracle은 1분에 최대 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 |

오라클에서 비약적인 발전을 이룰 수 있는 방법이 있습니까?

MOS에서-

ORA-01852(Doc ID 1553906.1)로 타임스탬프 열에 윤초 삽입 실패

적용 대상:

Oracle Database - Enterprise Edition - 버전 8.1.7.4 이상

Oracle Database - Standard Edition - 버전 8.1.7.4 이상

본 문서의 정보는 모든 플랫폼에 적용됩니다.

증상:

타임스탬프 열에 윤초를 삽입하려고 하면 실패합니다. ORA-01852: 초는 0에서 59 사이여야 합니다.

원인

59초 이상의 값을 날짜 또는 타임스탬프 데이터 유형에 저장할 수 없습니다.

해결책

이 문제를 해결하기 위해 윤초 레코드를 varchar2 데이터 형식으로 대신 저장할 수 있습니다.

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.

최선의 해결책이 아니라, 유일한 해결책입니다.

언급URL : https://stackoverflow.com/questions/31136211/how-to-handle-leap-seconds-in-oracle

반응형