복붙노트

[SQL] 어떻게에만 시간을 저장합니다; 하지 날짜와 시간?

SQL

어떻게에만 시간을 저장합니다; 하지 날짜와 시간?

하나 개의 필드에서 나는이 아닌 날짜 쌍, 즉 표준 오라클 날짜를 저장해야합니다.

01/10/2009 22:10:39

그러나 시간이 만

22:10:39

나는 디스크 공간 저장 (I 2 만 개 행이) 나 더 빠른 처리를 제공하고 있다고 생각합니다.

해결법

  1. ==============================

    1.그것은하지만 이러한 목적에 매우 적합합니다 ... 당신은 INTERVAL DAY TO SECOND 데이터 형식을 시도 할 수 있지만, 그것은 당신에게 어떤 디스크 공간을 절약하지 않습니다.

    그것은하지만 이러한 목적에 매우 적합합니다 ... 당신은 INTERVAL DAY TO SECOND 데이터 형식을 시도 할 수 있지만, 그것은 당신에게 어떤 디스크 공간을 절약하지 않습니다.

    create table t1 (time_of_day interval day (0) to second(0));
    
    insert into t1 values (TO_DSINTERVAL('0 23:59:59'));
    
    select date '2009-05-13'+time_of_day
    from   t1;
    

    11 바이트하지만.

  2. ==============================

    2.가장 좋은 방법은 아마도 숫자 필드로 "자정 이후의 초"를 저장하는 것입니다.

    가장 좋은 방법은 아마도 숫자 필드로 "자정 이후의 초"를 저장하는 것입니다.

    SELECT to_char( SYSDATE, 'SSSSS' ) FROM dual;
    
  3. ==============================

    3.이 같은 문자열로 날짜에서 시간을 추출 할 수 있습니다 :

    이 같은 문자열로 날짜에서 시간을 추출 할 수 있습니다 :

    to_char(sysdate,'HH.MI.SS')
    

    하지만 공간 저장 도움이 될 것입니다 시간 전용 데이터 타입이 없다.

  4. ==============================

    4.당신은 (현재 아무것도 아니다) 디스크 공간의 몇 메가를 절약 할 수 있으며 성능이 아무것도 옆에 얻을 것이다.

    당신은 (현재 아무것도 아니다) 디스크 공간의 몇 메가를 절약 할 수 있으며 성능이 아무것도 옆에 얻을 것이다.

    당신은 제안 자정 이후의 초 수를 저장하기위한 번호 형식의 열을 사용할 수 있습니다 단지 제약에 대해 잊지 마세요. (아마도 상수 대신에, 상기 저장된 값에 따라 1 내지 3 바이트를 사용한다)를 DATE 컬럼으로 사용 7 바이트 번호 (5, 0을 사용하는 것)

  5. ==============================

    5.당신이 사용할 수있는:

    당신이 사용할 수있는:

    TO_CHAR(<DATE_COLUMN>, '<TIME_FORMAT>');
    

    TO_CHAR(SYSDATE, 'HH24:MI:SS');
    

    시간 형식에 대한 당신은 여기에서 확인하실 수 있습니다

  6. from https://stackoverflow.com/questions/1786418/how-to-store-only-time-not-date-and-time by cc-by-sa and MIT license