spring - HQL查询两个日期之间的记录

标签 spring hibernate hql

我正在尝试在我的 Spring/Hibernate 应用程序中使用 HQL 查询所有在 Date1 和 Date2 之间具有 DateAdded 或在 Date1 和 Date2 之间具有 LastSeen 的客户记录,因此我在 Repository/DAO 类中构建了这个 HQL 查询:

sessionfactory.getCurrentSession().createQuery("from Customer c where c.dateAdded BETWEEN '"+startDate+"' AND '"+endDate+"' OR c.lastSeenDate BETWEEN  '"+startDate+"' AND '"+endDate+"'").list();

我已调试应用检查 startDate 和 endDate 并发现它们发送为:

开始日期:2014 年 1 月 22 日星期三 01:16:57 HKT

结束日期:2014 年 1 月 29 日星期三 01:16:57 HKT

在 DB 中,我 100% 确定至少有一条记录满足此查询,因为这条记录 DateAdded 和 LastSeen 如下:

2014-01-23 15:33:38

2014-01-25 15:33:38

那么有人可以告诉我我做错了什么/在这里失踪了吗?

最佳答案

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String frmDate = format.parse(startDate);
String enDate = format.parse(endDate);
sessionfactory.getCurrentSession()
.createQuery("FROM Customer AS c WHERE c.dateAdded BETWEEN :stDate AND :edDate ")
.setParameter("stDate", frmDate)
.setParameter("edDate", enDate)
.list();

希望这会有所帮助!

关于spring - HQL查询两个日期之间的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21265134/

相关文章:

java - hibernate java程序会不会没有sql代码?

hibernate - 在 Grails 中使用 Hibernate HQL 命名查询?

java - 使用连接池

hibernate - 为什么 hibernate/jpa 在删除映射列表中的已删除元素之前将 @OrderColumn 字段设置为 null?

java - 如何忽略 Spring Integration 路由器中的 Channel ResolutionException?

java - 如何使用 Json 响应显示日期到 Ext Js 列

sql - HQL,同一个表上的左连接

java - HQL 查询集合中的列

java - 使用现有的 Servlet 类或 JSP - Servlet 列表为空

java - Spring:注入(inject) Scala 常量