如何在HQL中使用Datediff()

时间:2014-04-05 14:12:34

标签: sql-server nhibernate hql datediff

我正试图弄清楚日期之间的区别。在我的SQL SERVER中它可以正常工作:

Select CSERVICE_ORDER_ID 
FROM TSERVICE_ORDERS 
WHERE DATEDIFF(DAY, CDB_CREATE_DATE_TIME, CCANCELLATION_DATE) = 4

但在我的HQL查询中,我没有得到它。 Datefiff函数在HQL查询中有效吗?是否有任何具有相同行为的功能?

1 个答案:

答案 0 :(得分:0)

HQL不支持datediff,但如果您仍想使用datediff,则应使用createNativeQuery()createSQLQuery()在sql中编写。在你的例子中,你只需要id,而不是实体对象,所以这应该就足够了。

或者你可以在hql中使用这样的东西,但是如果你记录日期时间(不仅仅是日期),那么这种准确性有点棘手。

4>(((CDB_CREATE_DATE_TIME - CCANCELLATION_DATE)/24/60/60/10)-1)>3

/ 24/60/60/10是1小时的小时,1小时的分钟,1分钟的秒,10是我认为的精确度(1 / 10s),cz我得到69.444444444444445 6天不同如果我不用10表示,最后加-1,