我需要按时间使用HQL过滤选择一些实体。但我需要在没有时间的情况下仅比较日期组件。例如1.1.2011 12.00和1.1.2011 13.20必须相等。
我可以使用哪种操作员?
@Query("FROM Item item " +
"WHERE item.date [equality by date operator] :date " )
List<Item> findByDate(@Param("date") Date date);
答案 0 :(得分:10)
如果您不介意特定于DB的功能,您可以这样做(以Oracle为例)。
@Query("FROM Item item WHERE trunc(item.date) = trunc(:date) " )
List<Item> findByDate(@Param("date") Date date);
您可以使用此方法,因为OracleDialect将trunc
注册为StandardSQLFunction
,Oracle的TRUNC
删除日期的时间组件。
答案 1 :(得分:10)
如果你介意特定于数据库的功能(你应该),那么使用2个日期:
然后查询日期&gt; =从日期和&lt; =到日期
答案 2 :(得分:0)
"Select col from Table t where t.date = CURRENT_DATE()"
试试这个。