【发布时间】:2010-02-28 11:26:24
【问题描述】:
我有一个类User,其中一个字段名为birthDate,即java.sql.Date。
如何进行 hql 查询以检索所有 min 和 max 岁之间的 Users?
(我的真实情况比这稍微复杂一些,但这就是我现在卡住的地方)。
更新
它必须是一个 hql 表达式,所以我可以将年龄表达式放在一个计算属性中。
【问题讨论】:
标签: java sql hibernate datetime hql
我有一个类User,其中一个字段名为birthDate,即java.sql.Date。
如何进行 hql 查询以检索所有 min 和 max 岁之间的 Users?
(我的真实情况比这稍微复杂一些,但这就是我现在卡住的地方)。
更新
它必须是一个 hql 表达式,所以我可以将年龄表达式放在一个计算属性中。
【问题讨论】:
标签: java sql hibernate datetime hql
计算与最小和最大年龄对应的出生日期。然后使用下面的 HQL。
Select u from User u where u.birthDate between :minDate and :maxDate
将minDate 和maxDate 设置为您在执行查询之前计算的值。
【讨论】:
这取决于数据库。大多数都有一些处理日期算术的方法。 MySQL 有一个 datediff 函数,它将返回天数,因此您可以将其除以 365 并得到非常接近。 MySQL 方言已经将 datediff 作为注册函数。对于其他数据库,您可能需要使用不同的功能,并可能在自定义方言中注册它们。但是你可能会偏离一点,除非你考虑闰年,这在 HQL 表达式中很棘手。使用日期更容易,因为您可以保持月份和日期不变,更改年份,然后在 HQL 中使用 。
【讨论】: