Java 在oracle和HSQL中工作的查询
大家好,我的代码中有一个查询,它正在与oracle 12c一起工作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
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.10to_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,这是我的错误。