Java 在oracle和HSQL中工作的查询

Java 在oracle和HSQL中工作的查询,java,sql,hsqldb,oracle12c,Java,Sql,Hsqldb,Oracle12c,大家好,我的代码中有一个查询,它正在与oracle 12c一起工作 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.9999

大家好,我的代码中有一个查询,它正在与oracle 12c一起工作

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 Version:1.8.0.10

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版是否支持这一点,但您应该真正升级到当前版本

DBMS系统是不同的,有许多SQL方言。迟早你会接受这一点。你为什么要使用这样一个过时的HSQL版本?@user75ponic:这是一个“ANSI连接”@a_horse_和_no_name My bad,这是我的错误。