2017-06-20 29 views
0

在MySQL中使用Hibernate。我有以下查詢:爲什麼DATE函數不能在Hibernate中使用不同的計數值?

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

由於我在MySQL中使用時間戳,我需要使用DATE()來比較日期部分只。問題是,每當我使用DATE()用不同的關鍵字一起,我得到了錯誤:

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

如果我刪除從count()函數的日期(),但它產生錯誤的結果查詢工作的罰款。 我的問題是爲什麼DATE()在Where子句中正常工作,但不在具有distinct關鍵字的count()函數中工作? 我可以使用DATE_FORMAT()使用本機查詢,但由於某些原因,我試圖讓事情在Hibernate中工作。

+0

如果'my_date'數據類型是文本,那麼查詢沒有任何問題,除了最後的雙引號,我認爲這是一個錯字。沒有理由說它沒有'date()'就可以工作,但不能用'date()'工作。嘗試直接在數據庫上運行查詢,如果仍然出現錯誤,請嘗試在rextester.com上覆制結果並共享相同結果。 – Utsav

回答

0

試試這個查詢SELECT count(distinct DATE(s.my_date)) FROM my_table s WHERE DATE(s.my_date) BETWEEN :from_date AND :to_date"

+0

這個查詢如何與上面的不同? – ipkiss

+0

@Mayank - 儘管OP的查詢中沒有必要使用where子句中的額外大括號,但這並不會導致任何錯誤。 – Utsav

相關問題