Hibernatehqlクエリで2つの日付を比較する必要があります。 Java BeanでJava.util.Dateを使用し、mysqlデータベースのデータ型としてタイムスタンプを使用しています。
select t from Task t where t.modifiedDate > t.endDate;
上記のクエリは、時刻と日付を比較します。上記のクエリの日付を時間なしで比較するにはどうすればよいですか。
使用可能な日付関数については、Hibernateのドキュメントを参照してください
http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html
セクション14.10で、この行に注意してください
second(...), minute(...), hour(...), day(...), month(...), and year(...)
だからこれはうまくいくはずです
... where year(t.endDate) > year(t.startDate)
and month(t.endDate) > month(t.startDate)
and day(t.endDate) > day(t.startDate)
質問を満たすと報告された解決策は
... where DATE(t.endDate) > (t.startDate)
date()
関数を使用して提案されたソリューションは、純粋なSQLではないようで、(SQL Serverを使用して)機能しません。元の解決策(日、月、年を個別に比較する)は正しい方向への一歩ですが、この方法で行うことはできません。たとえば、将来の日付の場合、月の場合は日を大きくする必要はありません。ただし、次のSQLは機能するはずです。
( year(t.endDate) > year(t.startDate) )
or
( year(t.endDate) = year(t.startDate)
and
month(t.endDate) > month(t.startDate) )
or
( year(t.endDate) = year(t.startDate)
and
month(t.endDate) = month(t.startDate)
and
day(t.endDate) > day(t.startDate) )