2012-03-20 7 views
0

SQLServer上で正常に動作するように見えるが、Oracleに対して例外がスローされるHQLクエリを作成しました。 クエリは、単にどうやらあなたはOracleでSYSDATEから秒を取得することはできませんすべてのタスクOracleのタイムスタンプのHQLの相違

SELECT SUM(second(t.endTime) - second(t.startTime)) FROM Task as t 

の時間の合計を計算します。両方のデータベースで動作する単一のHQLクエリを記述することは可能ですか?この場合、oracleを個別に処理する必要がありますか?

EDIT:endTImeとstartTimeの両方がDateタイプであることを忘れています。 と私が得る例外は、することができますはい、syntaxあなたは違っそれをしなければならないと思い暗示され、わずかに異なっている

Caused by: java.sql.SQLException: ORA-30076: invalid extract field for extract source 

答えて

1

です。

これはextract(SECOND from (endtime - starttime))です。

ただし、dateからはextract秒になることができます。この方法で秒が必要な場合は、の列にはがあり、timestampのデータ型になります。

また、あなたのために役立つようにもっと便利で、私は以下を好む。 Oracleは日付演算から日数を返します。したがって、最後は乗算されます。

(endtime - starttime) * 60 * 60 * 24 
+0

したがって、別のOracleクエリーを使用する必要がありますか? – Abhijith

+0

SQL-Serverで動作するようにOracleクエリーを変換できない場合は、はい。お互いに日付を差し引いた場合、SQL-Serverが返すものは分かりません。 – Ben

+0

もし私が間違っていなければ、それは日付を返します。 –

関連する問題