java - 使用 SQL 将 Date Java 与数据库表中的 DateTime 列进行比较

标签 java sql hibernate datetime date

我有两个 Date Java 对象,它们将被分配给 sql 查询中的一些变量(因为我使用 Hibernate),以便将它们与 DateTime 类型进行比较列获取具有指定时间范围的行,例如:

  WHERE event_date >= :startDate and event_date < :finishDate

我无法直接比较日期和日期时间,所以我想到了 2 种可能的解决方案:

  • 尝试使用查询将 event_date 字段转换为比较前的日期字段。
  • 或者尝试将 date java 对象转换为 dateTime,我认为这可能是不可能的..

你会建议我做什么?

最佳答案

我猜你遇到问题是因为你使用了 setDate(如果我错了请纠正我)和 setDate 方法:

Binds the date (time is truncated) of a given Date object to a named query parameter.

改用 setTimestamp,它绑定(bind)给定 Date 对象的日期和时间:

java.util.Date startDate = … ;
java.util.Date finishDate = … ;
Query query = session.createQuery("from YourTable where event_date >= :startDate and event_date < :finishDate");
query.setTimestamp("startDate", startDate);
query.setTimestamp("finishDate", finishDate);


p.s.: 一定要使用 java.util.Date 对象并且不是 java.sql.Date 对象。

关于java - 使用 SQL 将 Date Java 与数据库表中的 DateTime 列进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238850/

相关文章:

java - JAXB,setter/getter 的注解

php - 使用php在sql查询中的where条件中传递数组

sql - 查找每个 GROUP BY 结果中的行数

java - Java 中的 PCA-SIFT

java - 在 Java 中从一种方法调用数组到另一种方法时遇到问题

java - ByteBuffer.allocate() 与 ByteBuffer.allocateDirect()

sql - 如何替换字符串中的奇怪模式?

java - Spring Boot - “Error creating bean with name 'entityManagerFactory'” - 启动

java - 在 JPA 中使用带有串联 id 的字符串列值作为外键

java - 如何为父类(super class)编写 Hibernate Criteria 查询并检查某个子类?