반응형
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초
반응형