首页 > 解决方案 > Spring JPQL:特定月份的日期

问题描述

我将 SQL Server 与 SpringBoot 2.5 一起使用。我有以下实体:

@Data
public Post{
  Integer id;
  LocaleDate start;
  ...
}

我需要得到Post一个特定月份的所有内容。我知道我可以使用Querylike

@Query('select * from Posts WHERE MONTH (start)=MONTH (:timeStamp)')
List<Post> findByMonth(LocalDate timeStamp);

BETWEEN但是如果我在 Java 中计算之前的日期,我也可以使用该表达式,例如

@Query('select * from Posts WHERE start BETWEEN :tStart AND :tEnd)')
List<Post> findByMonth(LocalDate tStart, LocaleDate tEnd);

最后但并非最不重要的一点是,我可以使用SpecificationSpringframeWork 中CriteriaBuilder cbcb.between

从 DB 的角度来看,这三种方法都是一样的还是它们有一些陷阱?

我问的主要原因是这findByMonth似乎很有说服力,但我不知道其他查询是否可以更好地执行(在数据库级别)。

标签: jpql

解决方案


推荐阅读