我希望将以下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完成吗?
答案 0 :(得分: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函数支持的其他格式。
答案 1 :(得分:0)
Criteria.add(Restrictions.between("propertyName","startDate", "endDate"))