Oracle中时间戳的HQL差异
我编写了一个HQL查询,它在SQLServer上似乎运行良好,但在Oracle上抛出了一个异常。 查询只计算所有任务的持续时间之和Oracle中时间戳的HQL差异,oracle,hql,Oracle,Hql,我编写了一个HQL查询,它在SQLServer上似乎运行良好,但在Oracle上抛出了一个异常。 查询只计算所有任务的持续时间之和 SELECT SUM(second(t.endTime) - second(t.startTime)) FROM Task as t 显然,在Oracle中,您无法从sysdate获得秒数。是否可以编写一个HQL查询来处理两个数据库?或者在这种情况下,我应该单独处理oracle吗 编辑:我忘了添加endTIme和startTime都是日期类型。 我得到的例外是
SELECT SUM(second(t.endTime) - second(t.startTime)) FROM Task as t
显然,在Oracle中,您无法从sysdate获得秒数。是否可以编写一个HQL查询来处理两个数据库?或者在这种情况下,我应该单独处理oracle吗
编辑:我忘了添加endTIme和startTime都是日期类型。
我得到的例外是
Caused by: java.sql.SQLException: ORA-30076: invalid extract field for extract source
是的,你可以,只是有点不同,这意味着你必须以不同的方式来做
这是提取(从(endtime-starttime)开始的第二次提取)
但是,您只能从日期开始几秒钟。如果通过此方法需要秒数,则列必须是时间戳
日期类型
或者,更有用的,因为它会为你工作,我更喜欢以下。Oracle返回从日期算起的天数,因此在最后是乘法
( endtime - starttime ) * 60 * 60 * 24
因此,我必须使用一个单独的oracle查询?除非您可以将oracle查询转换为SQL Server,否则是的。我不知道如果你们减去彼此的日期,SQL Server会返回什么?如果我没弄错的话,它会返回一个日期。@LajosArpad,从技术上讲,它是一个数据类型,但是,当对日期进行日期算术时;这是有效的。