반응형

DB2 날짜 계산 ( TIMESTAMP 타입 )


동작시간, 세션시간, 실행시간 등을 계산하고 싶은 경우

[ 종료시간 - 시작시간 ] 

으로 계산합니다.


위와 같이 작성하여 결과값을 얻으면 좋겠지만

DB2 는 TIMESTAMPDIFF 함수를 사용하여 계산해야 합니다.


문법


>>-TIMESTAMPDIFF--(--expression--,--expression--)--------------><


TIMESTAMPDIFF ( 2, char( timestamp('2017-08-30 17:40:44.046')- timestamp('2017-08-30 17:55:25.335'))) 


첫번째 expression : 시간 단위 유형

두번째 expression : 종료시간 - 시작시간을 뺀 결과를 CHAR (22)로 변환 한 결과



첫번째 expression 에 원하는 형태의 값을 입력하는대로 결과를 출력합니다.


1 : Fractions of a second ( 초의 소수부분  )

2 : Seconds ( 초 )

4 : Minutes ( 분 )

8 : Hours ( 시간 )

16 : Days ( 일 )

32 : Weeks ( 주 )

64 : Months ( 월 )

128 : Quarters (분기 )

256 : Years ( 년 )





주의사항


SELECT TIMESTAMPDIFF(16, CHAR(timestamp('2017-03-01-00.00.00') - timestamp('2017-02-01-00.00.00'))) FROM sysibm.sysdummy1



2017.02.01 ~ 2017.03.01 의 경우 실제일수는 28일인데 결과는 30일로 출력됩니다.


1달이상 계산시 정확한 값이 필요한 경우 다른 방법을 권장합니다.





응용 예제


로그인 시간과 로그아웃 시간을 이용하여 사용자의 세션시간을 확인하는 예제입니다.


SELECT TIMESTAMPDIFF(2, CHAR(timestamp('2017-08-30 17:55:25.335') - timestamp('2017-08-30 17:40:44.046') )) / 60 ||'분'||
       LPAD(
            MOD(
                 TIMESTAMPDIFF(2, CHAR(timestamp('2017-08-30 17:55:25.335') - timestamp('2017-08-30 17:40:44.046') ))
                ,60
               )
           ,2
           ,'0'
          ) ||'초' AS SESSION_TIME   /* 세션시간(분:초) */
  FROM sysibm.sysdummy1
;



결과 : 14분41초

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,