gpt4 book ai didi

hibernate - HQL 比较日期

转载 作者:行者123 更新时间:2023-12-03 13:58:26 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Postgresql Date type and java SimpleDateFormat

(1 个回答)


7年前关闭。




我有以下查询:

    StringBuilder sb = new StringBuilder("select e from Event e");
sb.append(" where e.user = :user and e.activated = true and e.startDate <= :date and uc.endDate >= :date");
Query query = this.getEntityManager().createQuery(sb.toString());
query.setParameter("user", user);
query.setParameter("date", date);

其中 date 是标准的 Java 日期对象,startDate、endDate 是没有时间的 Postgresql 日期(例如,在数据库中它们看起来像“2014-04-03”)

但是我发现当提供的日期参数与 startDate 列在同一天时,找不到匹配项。我认为 '<=' 中的 '=' 会解决这个问题吗?

我认为这是因为一个是完整的时间戳而一个只是一个日期?我已经尝试过其他类似问题的建议,包括...

- 使用 SimpleDateFormat 将日期转换为 yyyy-MM-dd 模式,然后使用 DATE() 在 HQL 中进行转换

- 使用日历在设置为参数之前删除时间组件

- 使用日(e.startDate)<=日(日期)和月(e.startDate)=月(日期)等...

但没有一个奏效。所以我的问题是,为什么这个日期比较不起作用和/或我如何正确地将参数转换为日期?

PostgreSQL 9.0 | JPA | hibernate 3.6

谢谢!

最佳答案

退房 Query.setDate() , Query.setTimestamp() 方法并使用正确的方法代替 Query.setParameter() .

关于hibernate - HQL 比较日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22846641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com