2016-08-31 22 views
0

この式が機能しない理由を教えてもらえますか? 私は時間開始と時間終了の2つの列を持っています。それらの間の時間差を見たいと思います。 2つの列がプレーンテキスト形式ですが、私はそれらの違いを見つける必要があり : 例:17:OBIEE 2つの列の時間差

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

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

私のようなエラーを取得しています00-9:00 = 8時間

答えて

1

TIMESTAMPDIFFを実行する前に列をキャストする必要はありませんか?それはエラーが言うことです:あなたは互換性のないタイプです。 TIMESTAMPDIFF(sql_tsi_second、キャスト(...)、キャスト(...))を行う必要があります。この作品が欲しい!

+0

正確に。 STRINGに対してTIME操作を行うことは期待できません。 – jackohug

1

@ m-beerdenによる前回の回答は正しいですが、timestampdiffに文字列を渡すことはできません。最初に適切な日時形式に変換する必要があります。

あなたの数式には他にもいくつか問題があります。開始時刻の前に引数として終了時刻を渡すと、TIMESTAMPDIFFは負の数を返します。時間がちょうど8時間離れていた場合、これは-28800になります。

次のあなたは、あなたが本当に時間数が必要な場合は0を返します。3600 MOD(28800, 3600)で、この上MODを実行している、あなたはSQL_TSI_HOURを使用するかは、3600で割る必要があり、それによって、国防省ではありません。

関連する問題