728x90
반응형

※  Millisecond 시간을 구하기 위해서는 Timestamp 형식을 사용해야만 한다.

 

▷ 현재시간 TIMESTAMP 형식으로 구하기

SELECT SYSTIMESTAMP,

             TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3'),

             CURRENT_TIMESTAMP(3)

FROM DUAL

 

>> 결과 : 2010-09-09 오후 9:00:41.583261 +09:00

              20100909210041583

              2010-09-10 오전 11:00:41.583 +09:00

=> SYSTIMESTAMP 형식을 문자로 변형할때 'YYYYMMDDHH24MISSFF3' 문자열 포맷타입의 마지막 숫자 '3'은 밀리세컨드시간 자리수를 의미 (3 => 밀리세컨드 자리수를 3자리까지 구함)

테스트 결과 6자리까지는 시간이 변경되며 계산되어지나 7자리 부터는 '0'으로 자리수만 채워서 출력됨. CURRENT_TIMESTAMP(3) 의 숫자또한 같은 의미임.

위 결과를 보면 CURRENT_TIMESTAMP 는 시스템 시간이 아님...

SYSTIMESTAMP 및 CURRENT_TIMESTAMP 함수의 반환 타입은 TIMESTAMP WITH TIME ZONE 타입임...  CURRENT_TIMESTAMP 함수는 현재 세션의 시간대를 기준으로 한 현재 날짜를 반환함.

 

SELECT DBTIMEZONE FROM DUAL;

>> 결과 : +00:00

SELECT SESSIONTIMEZONE FROM DUAL;

>> 결과 : +09:00     => 우리나라는 GMT 시간보다 9시간이 빠름

 문자열을 TIMESTAMP 형식 변환하기

SELECT TO_TIMESTAMP('2010010813324012', 'YYYYMMDDHH24MISSFF2') FROM DUAL

>> 결과 : 2010-01-08 오전1:32:40.120000000


 시간, 분, 초, 밀리초 까지만 구하기

SELECT TO_CHAR(SYSTIMESTAMP, 'HH24MISSFF3') FROM DUAL

>> 결과 : 085722084  => 08:57:22.084

 

 시간 차이 구하기 - 1

SELECT SYSTIMESTAMP(3) - 

             TO_TIMESTAMP('20100908133240123', 'YYYYMMDDHH24MISSFF3')

FROM DUAL

>> 결과 : +00 19:39:19.313000     

    => +00 (일자 차이, 현재시간이 빼주려는 시간보다 이전이면 '-', 이후이면 '+'),

        나머지는 시간차이.

        위와 같이 구하면 정확한 시간이 나오지 않는다. 아무래도 세션의 시간대를 기준으로

        계산해서 그런거 같은데 현재시간대를 기준으로 구하려면 아래와 같이 하면 된다.

 

SELECT  TO_TIMESTAMP(TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3'),

              'YYYYMMDDHH24MISSFF3')

             TO_TIMESTAMP('20100908133240123', 'YYYYMMDDHH24MISSFF3')

FROM DUAL

=> TIMESTAMP 타입을 문자열로 변환후 다시 TIMESTAMP 형식으로 변환하여

    계산하면 정상적으로 계산됨... 왜 그런지는 아직 잘 모르겠음...

 

 

 시간 차이 구하기 - 2 (시분초,밀리초(3자리) 문자열로 구하기)

SELECT REPLACE(REPLACE(SUBSTR(SYSTIMESTAMP(3) -

             TO_TIMESTAMP(TO_CHAR(SYSDATE, 'YYYYMMDD') || '093906329', 'YYYYMMDDHH24MISSFF3'), 12, 12),

             ':', ''), '.', '')

FROM DUAL

>> 결과 : 004551328

    => 시간만 구하기 때문에 일자는 의미가 없음

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,