2016-06-09 6 views
1

나는이 작업 ID, 유형, exec_time, END_TIME 등 일정을 저장할 작업 테이블 ... 내가 타임 스탬프와 간부/종료 시간을 얻을타임 스탬프 변환

을 예약 한.

BI 용도로 기간 (end_time - exec_time)을 계산하고 hh : mm : ss로 반환해야합니다.

exec/end_time 형식은 dd/mm/yy hh : mm : ss : miliseconds시입니다.

도와주세요. 미리 감사드립니다. 스티브

+0

'exec/end_time'은 실제로 그 끝에 "시"가 있습니까? – BJones

+0

표준 SQL에서는'end_time - exec_time'을 간단히 수행 할 수 있습니다 (두 컬럼 모두'TIMESTAMP'로 적절하게 정의 된 경우). 어떤 DBMS를 사용하고 있습니까? –

+0

bjones, 예, 원본 소스 데이터에는 tableau가 없습니다. – Steve

답변

0

계산 된 필드를 사용하여 Tableau에서 수행 할 수 있습니다. 이것은 DBMS에서 할 수있는 것만 큼 우아하지 않을 수 있습니다. 그러나, 그것은 작동합니다

아래 내 스크린 샷에서 계산 된 필드

"시간"입니다

RIGHT("0" + STR(INT(DATEDIFF("second",[Exec Time],[End Time])/60)),2) 
+ ":" + 
RIGHT("0" + STR(INT((DATEDIFF("second",[Exec Time],[End Time]) % 6000)/60)),2) 
+ ":" + 
RIGHT("0" + STR(INT((DATEDIFF("second",[Exec Time],[End Time]) % 600))),2) 
:

enter image description here

UPDATE - 추가 코멘트 당 -

을 그것을하려면 시간 측정치 :

MAKETIME(
    INT(DATEDIFF("second",[Exec Time],[End Time])/60), 
    INT((DATEDIFF("second",[Exec Time],[End Time]) % 6000)/60), 
    INT((DATEDIFF("second",[Exec Time],[End Time]) % 600)) 
) 

추가 세부가 - 당신은 시간과 어떤 계산을하고있을 위하여려고하는 경우에 당신에게 다음 질문에`

를 해결하기 위해, 당신은 date 또는 numeric를 사용해야합니다. 예를 들어, 관심있는 가장 작은 시간 단위가 초이므로, 시간을 초 단위로 추가하거나 제거하는 계산에는 DATEDIFF("second",[Exec Time],[End Time])을 사용할 수 있습니다. 또는 내장 날짜 기능 DATEADD, DATEDIFF 등을 사용하십시오.

길이를이 형식의 hh:mm:ss으로 표시하려면 위와 같이 문자열을 만들어야합니다. 그 이유는 지속 시간이 24 시간을 초과하면 하루 종일 (이상) 통과 한 이후로 정확히 time 요소로 올바르게 표현되는 것이 아니기 때문입니다.

위의 (맨 위) 계산에서시, 분 및 초를 '0'으로 왼쪽으로 채우지 만 가장 오른쪽에있는 두 개의 문자 만 선택하십시오. 즉, 값이 한 자리 숫자 일 경우 0이 먼저 추가됩니다. 값이 이미 2 자리수 인 경우 변경되지 않습니다. 따라서 101이되지만 1313으로 유지됩니다.

이러한 솔루션을 가지고 놀고 작동 방식을 이해할 수 있도록 테스트 해보십시오.

+0

나는 당신이 Tableau에서 그것을 계산했고 그것이 계산 된 필드라고 가정한다 : End time - exec time. – Steve

+0

치수가 아니라 치수로 바꾸려면 어떻게해야합니까? – Steve

+0

@ 스티브 - 첫 번째 의견을 이해할 수 없습니다. 두 번째 주석은 할 수 있지만 그 부분에 의존 할 수는 없습니다. 해결책을 포함하도록 내 대답을 업데이트하겠습니다. – Nicarus