2017-06-13 6 views
0

こんにちはすべて私はオラクル12cで動作している私のコードでクエリを持っています。oracleとHSQLで動作するクエリ

SELECT * 
FROM TABLE-A 
    join TABLE-B on TABLE-A.id=TABLE-B.id 
where TABLE_B.ISRT_TS BETWEEN TO_TIMESTAMP ('10-JUN-17 04.00.00.000000000 AM','DD-Mon-RR HH:MI:SS.FF9 AM') AND TO_TIMESTAMP('10-Sep-17 03.59.59.999999999 AM', 'DD-Mon-RR HH:MI:SS.FF9 AM') 

しかし、HSQLで同じクエリを実行すると例外が発生します。 oracleとhsqlで動作するように既存の問合せを変更する方法を提案できます。

Error in hsql:data exception: invalid datetime format: 9 AM 
         Elapsed Time: 0 hr, 0 min, 0 sec, 0 ms. 

HQLのvesrsion:1.8.0.10

+2

DBMSシステムは異なり、多くのSQLダイアレクトがあります。遅かれ早かれ、これを受け入れる必要があります。 – Henry

+0

そのような古いHSQLバージョンを使用しているのはなぜですか? –

+0

@ user75ponic:** ** "ANSI join" –

答えて

1

to_timstamp()は、SQL標準の一部ではありませんので、HSQLはそれを理解していないことに驚きはありません。

あなたの状態を書くのポータブルな方法は、ANSI timstampリテラルを使用することです:

select * 
from table_a 
    join table_b on table_a.id = table_b.id 
where table_b.isrt_ts between timestamp '2017-06-10 04:00:00' and timestamp '2017-09-10 03:59:59.99999' 

私は古代と古いバージョン1.8があることサポートしている場合は知らない - しかし、あなたべき電流に本当にアップグレードバージョン。

関連する問題