ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ORA-01481: 숫자 형식 모델이 부적합합니다
    DB/Oracle 2019. 11. 4. 12:31
    반응형

    우선 to_char 함수 자체에 대해서 이해를 하셔야 할 것 같습니다.

     

    to_char 다음에 인수 두개가 있는데,

    첫 번째 인수에는 number 타입이나 date 타입이 들어가고,

    두 번째 인수에는 해당 타입을 어떤 char 타입으로 바꾸냐를 결정하는 것입니다.

     

    두 번째 인수에 들어가는 타입은 메뉴얼을 통해 자세하게 알아보시길 바랍니다.

     

    위 구문을 그대로 수행하면 다음과 같이 나올것입니다.

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

    SQL> select to_char('200707081232','yyyy-mm-dd') from dual;
    select to_char('200707081232','yyyy-mm-dd') from dual
                                  *
    1행에 오류:
    ORA-01481: 숫자 형식 모델이 부적합합니다

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

    '' 로 묶이긴 했지만 number 타입의 형식이 들어갔기 때문에, number로 인식했고,

    다음의 인수인 yyyy-mm-dd 로 바꾸려고 하지만

    yyyy-mm-dd는 date를 char로 바꿀 때 쓰는 것입니다.

    그러므로 에러가 날 수 밖에 없습니다.

     

    200707081232가 사람이 볼 때는 날짜이나 오라클은 그것을 알 지 못합니다.

    이유는 단지 varchar2로 만들었기 때문인거죠. 날짜를 인식하게 하려면 date 타입으로

    conversion 되는게 필요합니다. 이 때 쓰는게 to_date고요..

     

    SQL> select to_date('200707081232','yyyymmddhh24mi') from dual;

    TO_DATE('20070708
    -----------------
    20070708 12:32:00

     

    위와 같이 하면 각 캐릭터 자체가 의미를 지니게 됩니다.

    하지만 원하는 것은 date가 아닌 char 형 이므로 to_char로 conversion 해야 합니다.

    이 경우 to_char는 date를 받고 거기서 yyyy-mm-dd에 해당 되는 것을 뽑을 수 있습니다.

     

    SQL> select to_char(to_date('200707081232','yyyymmddhh24mi'),'yyyy-mm-dd') from dual;

    TO_CHAR(TO
    ----------
    2007-07-08

    출처 : Tong - 달땡이댕기님의 ORACLE통

    반응형

    'DB > Oracle' 카테고리의 다른 글

    Oracle - 값 중간에 빈부분 채워넣는 쿼리  (0) 2020.05.18
    ORA-01476 - 제수가 0 입니다  (0) 2020.02.26
    Oracle - Obecjt  (0) 2019.01.09
    Oracle - Materialized View  (0) 2019.01.08
    Oracle - DBMS_JOB 패키지 + DBMS_SCHEDULER  (0) 2019.01.08

    댓글

Designed by Tistory.