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
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 51
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3993 db에 저장되어 있는 CLOB 데이터의 위치가 어디로 저장되는지 확인하는 방법이 있을까요? 1 자바천재 2024.04.25 22
3992 큐브리드 서비스 시작이 안됩니다. 1 file 황남빵 2024.04.24 30
3991 큐브리드 JDBC 드라이버 XA문의 및 큐브리드 분산트랜잭션(XA) 지원 문의 1 몽키스패너 2024.04.24 29
3990 group_concat 변수 리턴 관련... 1 썬더기 2024.04.22 24
3989 기 DB에서 테이블 정보만 가져와서 다른 DB에 생성 1 바다소금 2024.04.22 18
3988 큐브리드 매니저 속도 문의 1 연동테스트용 2024.04.22 17
3987 cubrid count 속 2 kanin 2024.04.19 29
3986 cubrid 10.1 데이터 덮어쓰기 질문입니다. 4 ysk96 2024.04.18 61
3985 ACTION 명령어? 예약어? 1 투투투투기기 2024.04.17 20
3984 sql 구문 사용시 데이터 타입 decimal일 경우 1 투투투투기기 2024.04.11 30
3983 Regexp_count 4 SEO 2024.04.09 66
3982 큐브리드 메모리 오류 관련 질문 2 file 뚜벅뚜벅 2024.04.09 67
3981 큐브리드 실행이 안되는 이슈 1 file 최현욱 2024.04.09 42
3980 unloaddb & loaddb 관련 질문이 있습니다. 1 543534512 2024.04.06 46
3979 mac m1 다운로드 오류 1 file 혜주냉면 2024.04.05 42
3978 list 함수로 만든 sequence type을 varchar로 변환 문의 1 플레이어블 2024.04.04 36
3977 DECODE, CASE WHEN 사용법 문의 2 핑크팬더 2024.04.03 55
3976 schema 파일 loaddb - 스키마 정보 중복오류 문의 4 daay 2024.03.21 91
3975 object to string 4 네오랜덤 2024.03.20 69
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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