2017-06-13 24 views
0

大家好我在我的代碼中有一個與oracle 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加入」 –

回答

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支持 - 但你應該真的升級到當前版。