为什么DATE函数不能在Hibernate中使用count distinct?

时间:2017-06-20 16:45:39

标签: java mysql hibernate date

我正在使用Hibernate和MySQL。我有以下查询:

SELECT count(distinct DATE(s.my_date)) FROM my_table s WHERE (DATE(s.my_date) BETWEEN :from_date AND :to_date)"

由于我在MySQL中使用Timestamp,我需要使用DATE()来仅比较日期部分。问题是每当我使用DATE()和distinct关键字时,我都会遇到错误:

org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found '(' near line 1

如果我从count()函数中删除了DATE()但是它产生了错误的结果,那么查询工作正常。 我的问题是为什么DATE()在Where子句中工作正常但在带有distinct关键字的count()函数中没有? 我可以使用DATE_FORMAT()使用本机查询,但由于某些原因,我试图在Hibernate中使用它。

1 个答案:

答案 0 :(得分:0)

尝试此查询SELECT count(distinct DATE(s.my_date)) FROM my_table s WHERE DATE(s.my_date) BETWEEN :from_date AND :to_date"