2017-05-24 12 views
0

SELECTクエリでは、DATETIME列をDATE形式(年、月、日のみ)に変換したいと考えています。Hibernate HQL:日時を日付に変換しますか?

DATE(table.column)というコンストラクトを使用していましたが、素晴らしいことでしたが、このコンストラクトはSQLSERVERデータベース(以前はMySqlで動作していました)では機能していないようです。

これは私が会ったエラーです:

data type for node: org.hibernate.hql.ast.tree.MethodNode +-[METHOD_CALL] MethodNode: '(' | +-[METHOD_NAME] IdentNode: 'DATE' 

誰かが私はこの問題を解決することができますか?私はCONVERTとCASTを使ってみましたが、私は同じエラーに遭遇しました。

これは、クエリされています

SELECT DATE(al.loginTime) as loginTime, (COUNT(al.hawkUser)) as numeroAccessi, al.hawkUser as hawkUser, al.logoutTime as logoutTime " + 
       "FROM AccessLog as al GROUP BY al.hawkUser, DATE(al.loginTime) ORDER BY DATE(al.loginTime) DESC, al.hawkUser DESC 
+0

これは投影ですか?クエリを追加してください –

+0

あなたはHQLの代わりにネイティブSQLを使用しているようです。 database.is datetimeの列の形式は何ですか?詳細をいくつか追加してください。 – coder25

+0

完全なクエリを追加しました。 – RemovedQuasar

答えて

0

[OK]を、私は今、数回のクエリを変更し、このようなものです:私は再編成する必要がありながら

String query="SELECT " 
     + " al.loginTime as loginTime," 
     + " (COUNT(hu.id)) as numeroAccessi, " 
     + " hu.id as hawkUser " 
       + "FROM AccessLog as al " 
       + " INNER JOIN al.hawkUser hu " 
       + " GROUP BY " 
       + " al.loginTime," 
       + " hu.id " 
       + " ORDER BY " 
       + " al.loginTime DESC" 
       + " hu.email "; 

loginTimeは時間、minuted秒とDATETIMEですそれらは年月日のみを使用します(ログインリストです)。だから私はDATETIMEをDATEに変換する必要があります。このクエリはMySqlとSQLServerデータベースのため、CASTとCONVERTを使用することはできません。また、両方の構文も異なります。

関連する問題