一个表具有timestamp列。其中的示例值可能是2010-03-30 13:42:42。有了Hibernate,我正在做一个范围查询限制。(“column-name”,fromDate,toDate)。在PostgreSQL的Timestamp Column上使用Hibernate进行日期查询
该列的Hibernate映射如下。
<property name="orderTimestamp" column="order_timestamp" type="java.util.Date" />
比方说,我想找出所有具有30日期2010年3月和2010年3月31日在该领域的范围查询做如下的记录。
Date fromDate = new SimpleDateFormat("yyyy-MM-dd").parse("2010-03-30");
Date toDate = new SimpleDateFormat("yyyy-MM-dd").parse("2008-03-31");
Expression.between("orderTimestamp", fromDate, toDate);
这是行不通的。
将查询转换为各自的时间戳为“2010-03-30 00:00:00”和“2010-03-31 00:00:00”。因此,2010年3月31日的所有记录都被忽略。
这个问题的一个简单的解决方案可能是结束日期为“2010-03-31 23:59:59”。但是,我想知道是否有方法仅匹配时间戳列的日期部分。
此外,是Expression.between()
包括两个限制?文档并没有提到这一点。
我相信在两者之间总是排他性的限制。你为什么不移动1毫秒并为它们加1毫秒? – jishi 2010-03-30 08:03:33
@ jishi它的数据库依赖(和大部分时间包容我相信)。 – 2010-03-30 08:09:10
Shashikant你能解决这个问题吗? – changeme 2013-06-12 22:15:29