代码之家  ›  专栏  ›  技术社区  ›  Stefan Falk

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

  •  1
  • Stefan Falk  · 技术社区  · 6 年前

    我要检查一下 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 回复  |  直到 6 年前
        1
  •  1
  •   coladict    6 年前

    您可以尝试使用jpql函数调用,如 WHERE function('dayofweek', event.date) IN :dows ,但这是特定于数据库的。

    dayofweek mysql特有的函数返回1-7,其中1是星期日,7是星期六,其中 weekday 返回0-6,0为星期一。

    如果你使用Postgres,你可以使用 function('date_part', 'dow', event.date) 星期天从0开始。

    如果您使用的是另一个数据库,则必须检查它的文档,以找到也由选定的hibernate方言注册的适当函数。