【发布时间】:2019-01-28 20:32:17
【问题描述】:
我想知道以下查询中的比较将如何进行:
StringBuilder queryStr = new StringBuilder();
queryStr.append("SELECT o FROM PRDBook as o WHERE ")
.append("o.publicationDate < :now");
Query query = entityManager.createQuery(queryStr.toString());
Date now = new Date();
query.setParameter("now", now);
在数据库中,列publicationDate 的类型为timestamp without time zone。此列中的示例值:
2018-03-01 18:00:00
now.toString() 的结果是:
Wed Aug 22 16:14:03 CEST 2018
上述数据之间的比较是否会以这种方式进行:
2018-03-01 18:00:00
或者那样:
2018-03-01 18:00:00
【问题讨论】:
-
A
java.util.Date没有时区;这只是一个抽象的时间点。您是否尝试过运行代码以查看实际发生的情况?所以,我投票赞成第一个版本是什么。 -
@TimBiegeleisen 我已经运行了代码,其中有一本书在数据库中,出版日期为 2018-08-22 16:58:17。 now 的值为 Wed Aug 22 16:59:11 CEST 2018。提到的 book 对象已出现在结果列表中。看来,您投票正确。
标签: java sql postgresql hibernate hql