对于我的一项抓取操作,我需要检查是否DOW(date) IN :listOfDow
:
@Query("SELECT event FROM Event event WHERE DOW(event.date) IN :dows")
List<Events> getEvents(@Param("dows") Collection<DayOfWeek> dows);
很显然,DOW()
不存在。那么,有没有办法在HQL中做到这一点?
答案 0 :(得分:1)
您可以尝试使用像convert (datetime, substring(MD_SIGNATURE, charindex('/', MD_SIGNATURE,0)-2, LEN(MD_SIGNATURE)),105) as MD_SIGN_DATE
这样的JPQL函数调用,但这是特定于数据库的。
WHERE function('dayofweek', event.date) IN :dows
是特定于MySQL的函数,返回1-7,其中1是星期日,7是星期六,其中dayofweek
返回0-6,其中0是星期一。
如果您使用的是Postgres,则可以使用weekday
来获取,星期日从0开始。
如果您正在使用其他数据库,则必须检查其文档以找到适当的功能,该功能也已由选定的Hibernate方言注册。