我正在使用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中使用它。
答案 0 :(得分:0)
尝试此查询SELECT count(distinct DATE(s.my_date)) FROM my_table s WHERE DATE(s.my_date) BETWEEN :from_date AND :to_date"
。