Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle中时间戳的HQL差异_Oracle_Hql - Fatal编程技术网

Oracle中时间戳的HQL差异

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都是日期类型。 我得到的例外是

我编写了一个HQL查询,它在SQLServer上似乎运行良好,但在Oracle上抛出了一个异常。 查询只计算所有任务的持续时间之和

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,从技术上讲,它是一个数据类型,但是,当对日期进行日期算术时;这是有效的。