如何获取日期中的星期几?

时间:2018-10-15 19:01:57

标签: spring hibernate hql

对于我的一项抓取操作,我需要检查是否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中做到这一点?

1 个答案:

答案 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方言注册。