2014-02-05 66 views
0

我使用Hibernate @Formula找到2列使用Hibernate @Formula寻找时间差

@Formula("(sysdate-creation_date) * 86400") 
private long elapsedTime; 

这给elapsedTime在天,如果我上运行的Oracle查询之间的时间差,但在做单元测试使用HSQL DB,它以毫秒为单位给出elapsedTime。有什么办法可以使这个公式同时适用于Oracle和HSQLDB?对于我的用例,我希望在几秒钟内消逝的时间

+0

sql'DATEDIFF'? – 2014-02-05 11:54:53

+0

DATEDIFF不能与Oracle一起工作 – user401445

+0

如果目标服务器是oracle,我建议使用Oracle进行单元测试,因为您将遇到更多问题,并且会浪费更多时间用于模拟数据库,而不是使用Oracle安装程序。 H2可能是一个更好的选择,但我确实尝试过,并决定不再使用模拟数据库进行有或没有休眠的测试。 – jbaliuka

回答

0

要查找2列之间的时间差(秒),请使用两者都支持的SQL。

例如,在ORA语法兼容模式下,MYDATE1 - MYDATE2将两个日期之间的天数作为INTERVAL。

如果您想要一个数值,请将结果转换为整数或其他数字。

+0

我无法找到任何这两个支持的SQL。 MYDATE1 - MYDATE2给出了Oracle中两个日期之间的天数,但给出了HSQLDB情况下输出的秒数 – user401445