在 oracle 和 HSQL 中工作的查询

Posted

技术标签:

【中文标题】在 oracle 和 HSQL 中工作的查询【英文标题】:Query that works in oracle and HSQL 【发布时间】:2017-06-13 07:20:55 【问题描述】:

大家好,我的代码中有一个使用 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 版本:1.8.0.10

【问题讨论】:

DBMS 系统不同,SQL 方言很多。迟早你将不得不接受这一点。 你为什么用这么过时的HSQL版本? @user75ponic:那个一个“ANSI连接” @a_horse_with_no_name 我的错,这是我的错误。 【参考方案1】:

to_timstamp() 不是 SQL 标准的一部分,因此 HSQL 不理解它也就不足为奇了。

编写条件的一种可移植方式是使用 ANSI 时间戳记文字:

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 版是否支持 - 但您应该真的升级到当前版本。

【讨论】:

以上是关于在 oracle 和 HSQL 中工作的查询的主要内容,如果未能解决你的问题,请参考以下文章

在部门的所有项目中工作的员工

在 python 3 和 2 中工作的 Unicode 文字

通过慢速网络连接在 git 中工作的最快方法是啥?

在 IOS 8 中工作的具有动态高度的 UITableView 行在 ios 7 中不工作

在一个部门的所有项目中工作的员工

使用 HSQL DB 测试插入所有 Oracle 查询