Hibernate 仅比较HQL中的日期组件
我需要使用HQL按时间筛选来选择一些实体。但是我只需要比较没有时间的日期部分。例如,1.1.2011 12.00和1.1.2011 13.20必须相等 我能用什么接线员Hibernate 仅比较HQL中的日期组件,hibernate,hql,Hibernate,Hql,我需要使用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); @Query(“来自项”+ “其中item.dat
@Query("FROM Item item " +
"WHERE item.date [equality by date operator] :date " )
List<Item> findByDate(@Param("date") Date date);
@Query(“来自项”+
“其中item.date[日期相等运算符]:date”)
列出findByDate(@Param(“日期”)日期);
如果您不介意DB特定的函数,您可以这样做(以Oracle为例)
@Query(“来自项目,其中trunc(Item.date)=trunc(:date)”)
列出findByDate(@Param(“日期”)日期);
您可以使用它,因为OracleDialante将
trunc
注册为StandardSQLFunction
,而Oracle的trunc
删除了日期的时间成分。如果您不介意DB特定的功能(并且您应该),则使用两个日期:
试试这个。我正在使用oracle db,最好使用trunc。Tnx用于我们的回答很好,但是如果您想使用内存中的DB进行单元测试,而这不受支持,您将被卡住。在Oracle中,为了避免错误,您可以调用
trunc(item.date,'YYYY')
以避免一些错误。
@Query("FROM Item item WHERE trunc(item.date) = trunc(:date) " )
List<Item> findByDate(@Param("date") Date date);
"Select col from Table t where t.date = CURRENT_DATE()"