在PostgreSQL中使用Hibernate on Timestamp Column进行日期查询

Sha*_*ore 6 java postgresql orm hibernate date

表有时间戳列.其中的样本值可能是2010-03-30 13:42:42.使用Hibernate,我正在进行范围查询Restrictions.between("column-name",fromDate,toDate).

此列的Hibernate映射如下所示.

<property name="orderTimestamp"  column="order_timestamp" type="java.util.Date" />
Run Code Online (Sandbox Code Playgroud)

让我们说,我想找出所有日期为2010年3月30日和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);
Run Code Online (Sandbox Code Playgroud)

这不起作用.

查询将转换为相应的时间戳"2010-03-30 00:00:00"和"2010-03-31 00:00:00".因此,2010年3月31日的所有记录都将被忽略.

解决这个问题的一个简单方法是将结束日期定为"2010-03-31 23:59:59".但是,我想知道是否有方法只匹配timestamp列的日期部分.

Expression.between()包括两个限制?文档对此没有任何启示.

Fra*_*ens 0

也许您可以将 orderTimestamp 转换为 DATE。HQL确实支持这一点。