一尘不染

使用HQL查询日期,而忽略Oracle上的时间

hibernate

我有一张表(在Oracle 9及更高版本中),在这里我需要使用Hibernate查找给定日期的所有条目。这些条目具有时间戳(数据类型为“
date”)。一些条目有一个时间,其他条目只有一个日期。这不能更改,因为这是我无法更改的其他应用程序的输出。在SQL中,我会按照

SELECT * FROM table WHERE trim(table.date) = to_date('11.06.2009')

获取我想要的日期的所有条目。我想知道如何让Hibernate使用HQL做到这一点。我知道我可以在Hibernate中使用SQL查询,但这似乎不太干净。有没有办法做到这一点?如果可能的话,这种方法也应该适用于非Oracle数据库,其中timestamp是数据类型。


阅读 261

收藏
2020-06-20

共1个答案

一尘不染

您可以在HQL中放入两个约束,一个约束指定大于或等于您搜索日期的开始,另一个约束指定小于第二天。

table.date >=11.06.2009 AND table.date < 11.07.2009

HQL(以及SQL)还允许:

table.date between 11.06.2009 AND 11.07.2009

在保持心中between永远包容性,这意味着它都>=<=分别。此处的
更多详细信息betweenhttp : //www.coding-
dude.com/wp/java/hibernate-java/hibernate-hql-between-
expression/

2020-06-20