如何查询数据基于日期,但您的数据库存储日期为日期+时间。

时间:2011-06-30 18:38:07

标签: java datetime java-ee jpa jpql

由于我想在表X中存储每个数据的日期和时间,我使用

@Temporal(TemporalType.TIMESTAMP)
private Date dateProcess;    //java.util.Date

这项工作很棒。但现在我想创建在同一日期返回所有数据的查询。所以我试试

SELECT c from X c where c.dateProcess = : dateProcess

然后我会传递java.util.Date参数dateProcess,但返回的结果列表为空。我想必须在time到位。因此,如果两个日期没有确切的日期和时间,那么它将不相等,这将解释为什么我的返回结果列表为空。那么如何在这种情况下返回日期数据列表(不关心时间)?

4 个答案:

答案 0 :(得分:2)

只需使用日期范围,指定开始和结束时间。 > startTime和< ENDTIME

答案 1 :(得分:1)

尝试TemporalType.DATE

如果您需要保留时间,但只查询日期,则可以选择:

  • 使用JPQL日期函数 - day(..)months(..)year(..)
  • 使用<>作为日期范围(正如James建议的那样)
  • 将日期和时间存储在两个不同的列中。

答案 2 :(得分:0)

temporal type指定为Date会有帮助,还是会失去精确度?

答案 3 :(得分:0)

目前我喜欢这个

Using HQL to query on a date while ignoring the time on Oracle

我还没试过这个。所以不确定它会起作用。 date_format是发布中的注册函数。

http://www.docjar.com/html/api/org/hibernate/dialect/MySQLDialect.java.html