我有两个 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/