2016-08-31 7 views
0

이 수식이 작동하지 않는 이유는 누구에게 도와 줄 수 있습니까? 두 개의 열, 시간 시작 및 시간 마침, 시간 사이의 차이를 찾으려면 싶습니다.OBIEE 두 열 사이의 시간차

cast(floor(mod(TIMESTAMPDIFF(sql_tsi_second, "Worker"."Time Normal Finish","Worker"."Time Normal Start"),3600) /60)as char) 

I는 다음과 같은 오류를 얻고있다 :

Formula syntax is invalid. 
[nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 22025] Function TimestampDiff is called with an incompatible type. (HY000) 
SQL Issued: SELECT cast(floor(mod(TIMESTAMPDIFF(sql_tsi_second, "Worker"."Time Normal Finish","Worker"."Time Normal Start"),3600) /60) as char) FROM "Workforce Management - Absence Real Time" 
OK (Ignore Error) 

UPDATE을 : 두 개의 열이 일반 텍스트 형식입니다,하지만 난 그들 사이의 차이를 찾을 필요가 : 예 : 17 : 00-9 : 00 = 8 시간

답변

1

TIMESTAMPDIFF를 실행하기 전에 열을 전송하지 않아도됩니까? 그게 오류라고 : 당신은 호환되지 않는 유형이 있습니다. TIMESTAMPDIFF (sql_tsi_second, cast (...), cast (...))를 수행해야합니다. 희망이 작동합니다!

+0

정확히. STRING에 대해 TIME 연산을 수행 할 수는 없습니다. – jackohug

1

@ m-beerden의 이전 응답은 timestampdiff에 문자열을 전달할 수 없다는 점에서 정확합니다. 먼저 적절한 날짜 - 시간 형식으로 변환해야합니다.

수식에는 몇 가지 다른 문제가 있습니다. 시작 시간 전에 인수로 종료 시간을 전달하면 TIMESTAMPDIFF은 음수를 반환합니다. 시간이 정확히 8 시간 떨어져 있다면 -28800이됩니다.

다음 당신은 당신이 정말로 시간의 수를 원하는 경우 0을 반환합니다 3600 MOD(28800, 3600)으로,이에 MOD을 수행하는, 당신이 SQL_TSI_HOUR를 사용하거나 3600으로 분할해야, 그것에 의해 MOD 없습니다.