0

我希望将以下 SQL 转换为 HQL:

SELECT DISTINCT a.aid from atable a, btable b 
where a.aid=b.id and 
STR_TO_DATE(a.somecolumn, '%Y-%m-%d') BETWEEN CURDATE() - INTERVAL 10 DAY AND CURDATE();

简而言之,我们将日期作为字符串存储在表中的一列中。想在 HQL 中使用相同的方法来获取特定范围的记录。

这可以使用单个 HQL 完成吗?

4

2 回答 2

1

使用 DATEDIFF 函数让它工作-

SELECT DISTINCT a.aid from atable a, btable b 
where a.aid=b.id and DATEDIFF(current_date(), a.somecolumn) < 10

a.somecolumn中的日期以yyyy-MM-dd格式存储,但存储为字符串(a.somecolumn 类型为 varchar)。可能需要检查 DATEDIFF 函数默认支持哪些其他格式。

于 2013-04-16T02:41:15.070 回答
0
Criteria.add(Restrictions.between("propertyName","startDate", "endDate"))
于 2013-04-15T06:38:10.137 回答