Background Image

FORUM

조회 수 13535 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
FAQ & Tip 에서 확인 자료 입니다.
http://www.cubrid.com/zbxe/58122

위 방법으로는 오라클에서처럼 처리를 할 수 없다는 말씀인데.

--Case 1
create table xtbl
(
A int,
B timestamp default systimestamp not null,
C datetime default sysdatetime not null
)

--Case 2
create table xtbl2
(
A int,
B timestamp default SYS_TIMESTAMP not null,
C varchar(14) default TO_CHAR(SYS_TIMESTAMP, 'YYYYMMDDHH24MISS') not null
)

저 같은 경우는 Case 형식으로 오라클에서 사용하였습니다.
근데 Cubrid에서는 위와 같은 방법(Case 1,2)은 안되는것 같은데...

INSERT INTO TB_TMP01(A, B) VALUES(1, TO_CHAR(SYS_TIMESTAMP, 'YYYYMMDDHH24MISS'))

위와 같은 방법 밖에 없는 것인지 궁금합니다.

그리고 Cubrid에서도 저장일시와 같은 경우 위와 같이 varchar로 처리하는 것이 처리면에서나 성능상의 장점이 많은 것인지?

답변 부탁 드립니다.

감사합니다.



  • ?
    웁쓰 2010.01.08 03:14

    default sys_timestamp sysdate 경우 오라클과 다르게 작동 합니다. 테이블 생성시로 변환되어 들어가게 됩니다.
    다음의 테이블과 같이 생성이 됩니다.

    csql> ;sc test_data3
    === <Help: Schema of a Class> ===
     <Class Name>
         test_data3

    Attributes>

         int_data             INTEGER
         char_date            TIMESTAMP DEFAULT timestamp '06:05:54 PM 01/07/2010' NOT NULL

    고로 불편 하시겠지만 다음 질의처럼 매번 시간을 입력하셔야 합니다.
    INSERT INTO TB_TMP01(A, B) VALUES(1, TO_CHAR(SYS_TIMESTAMP, 'YYYYMMDDHH24MISS'))

    두번째 , 답변 입니다. 시분초를 사용하셔야 한다면 timestamp 타입을 쓰시는게 성능 향상에 도도움 될 것 같습니다. 저장되는 용량의 차이가 발생하기 때문입니다.

    다음은 테스트 결과인데 참고 하시기 바랍니다.

     

    create table test_data1

    (

    int_data int,

    char_date varchar(8) default to_char(sysdate,'YYYYMMDD') not null

    );

    insert into test_data1

    SELECT a.rnum

         , case when a.moddata = 1 then '20101201'|| '000'|| to_char(MOD(rownum,10))

                when a.moddata = 2 then '20101202'|| '000'|| to_char(MOD(rownum,10))

                  when a.moddata = 3 then '20101203'|| '000'|| to_char(MOD(rownum,10))

                when a.moddata = 4 then '20101204'|| '000'|| to_char(MOD(rownum,10))

                when a.moddata = 5 then '20101205'|| '000'|| to_char(MOD(rownum,10))

                when a.moddata = 6 then '20101206'|| '000'|| to_char(MOD(rownum,10))

                when a.moddata = 7 then '20101207'|| '000'|| to_char(MOD(rownum,10))

                when a.moddata = 8 then '20101208'|| '000'|| to_char(MOD(rownum,10))

                when a.moddata = 9 then '20101209'|| '000'|| to_char(MOD(rownum,10))

                when a.moddata = 10 then '20101210'|| '000'||to_char(MOD(rownum,10))

     else '20101211'|| '000'|| to_char(MOD(rownum,10))

     end

      from (

    SELECT rownum rnum , mod(rownum,10) moddata

    FROM table({0,1,2,3,4,5,6,7,8,9}) t0(a),

    table({0,1,2,3,4,5,6,7,8,9}) t1(a), -- 100

    table({0,1,2,3,4,5,6,7,8,9}) t2(a), -- 1,000

    table({0,1,2,3,4,5,6,7,8,9}) t3(a) -- 10,000

    ) a

    ;x

    create table test_data3

    (

    int_data int,

    char_date timestamp default systimestamp not null

    );

     

    insert into test_data3

    SELECT a.rnum

         , case when a.moddata = 1 then to_timestamp('20101201','YYYYMMDD')

                when a.moddata = 2 then to_timestamp('20101202','YYYYMMDD')

                   when a.moddata = 3 then to_timestamp('20101203','YYYYMMDD')

                when a.moddata = 4 then to_timestamp('20101204','YYYYMMDD')

                   when a.moddata = 5 then to_timestamp('20101205','YYYYMMDD')

                when a.moddata = 6 then to_timestamp('20101206','YYYYMMDD')

                   when a.moddata = 7 then to_timestamp('20101207','YYYYMMDD')

                when a.moddata = 8 then to_timestamp('20101208','YYYYMMDD')

                   when a.moddata = 9 then to_timestamp('20101209','YYYYMMDD')

                when a.moddata = 10 then to_timestamp('20101210','YYYYMMDD')

               else to_timestamp('20101211','YYYYMMDD')

               end

      from (

    SELECT rownum rnum , mod(rownum,10) moddata

    FROM table({0,1,2,3,4,5,6,7,8,9}) t0(a),

    table({0,1,2,3,4,5,6,7,8,9}) t1(a), -- 100

    table({0,1,2,3,4,5,6,7,8,9}) t2(a), -- 1,000

    table({0,1,2,3,4,5,6,7,8,9}) t3(a) -- 10,000

    ) a

    ;x

     

    $ csql -u dba index_test -S

     

            CUBRID SQL Interpreter

     

     

    Type `;help' for help messages.

     

    csql> ;info stats test_data1

     

    CLASS STATISTICS

    ****************

     Class name: test_data1 Timestamp: Thu Jan  7 18:06:23 2010

     Total pages in class heap: 416

     Total objects: 10000

     Number of attributes: 2

     Atrribute: int_data

        id: 1

        Type: DB_TYPE_INTEGER

        Mininum value: 1

        Maxinum value: 10000

        B+tree statistics:

     

     Atrribute: char_date

        id: 0

        Type: DB_TYPE_STRING

        Mininum value: Undefined

        Maxinum value: Undefined

        B+tree statistics:

            BTID: { 2 , 2856 }

            Cardinality: 10 (10) , Total pages: 21 , Leaf pages: 20 , Height: 2

     

     

     

     

    Current transaction has been committed.

    csql> ;info stats test_data3

     

    CLASS STATISTICS

    ****************

     Class name: test_data3 Timestamp: Thu Jan  7 18:06:23 2010

     Total pages in class heap: 312

     Total objects: 10000

     Number of attributes: 2

     Atrribute: char_date

        id: 0

        Type: DB_TYPE_UTIME

        Mininum value: 1291129200

        Maxinum value: 1291993200

        B+tree statistics:

     

     Atrribute: int_data

        id: 1

        Type: DB_TYPE_INTEGER

        Mininum value: 1

        Maxinum value: 10000

        B+tree statistics:

     

    오라클의 경우 http://scidb.tistory.com/entry/Varchar28-VS-Date-어느-것이-우월한가

    에서 장단점을 확인 하시길 바랍니다.

     

    즐거운 하루 되세요.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4442
926 백업을 실행하면 에러가 뜹니다. 1 지니보이 2011.03.02 8008
925 PHP 커넥션 실패 문의 1 무리링 2011.03.02 9739
924 JDBC에서 like 문 사용 방법은? 5 별솔아범 2011.03.01 15606
923 에러메시지 문의 드립니다 1 file 유니콘 2011.03.01 9399
922 네트워크 공사로 서버 ip가 변경 되었습니다. 1 file 이즈 2011.03.01 7886
921 설정 환경 복구 방법 1 이주하 2011.03.01 8753
920 큐브리드 언로드와 로그방법을 알려주세요 6 SoMa 2011.03.01 8399
919 큐브리드 버전과 빌드 문의 1 crkim2k 2011.02.28 7108
918 큐브리드 데이터베이스 복구 1 차도여리 2011.02.28 9508
917 like '%'글자 조회 3 스카이 2011.02.25 14308
916 날짜 연산 관련 문의드려요~ 3 니코로빈 2011.02.24 8883
915 데이터 이전이 불가합니다. 1 SoMa 2011.02.24 7784
914 SELECT 쿼리 실행시 오류문제입니다. 1 file 니코로빈 2011.02.24 9706
913 큐브리드 3.1로 업그레이드가 되지 않습니다. 10 종이 2011.02.23 7759
912 아래 918번 글에 대한 답변은 언제쯤...?? 1 유니콘 2011.02.21 7712
911 같은 서버의 타 데이터베이스의 테이블을 select 하고 싶습니다. 1 미스터비니 2011.02.17 8166
910 like 검색관련 1 secret 박성규 2011.02.16 10
909 right 함수안에 DATE_FORMAT 함수 있을때 문의 1 file 유니콘 2011.02.15 9013
908 큐브리드 매니저 버그 발견 1 file 유니콘 2011.02.15 7366
907 큐브리드 파이썬 드라이브는 어디서 다운받을 수 있나요? 2 까망군 2011.02.15 9659
Board Pagination Prev 1 ... 149 150 151 152 153 154 155 156 157 158 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales