web-dev-qa-db-ja.com

他の2つの日付間の日付を確認してください

私はこのモデルを持っています:

public class Event {
    private String name;
    private Date start;
    private Date end;
}

およびリポジトリとして

@Repository
public interface EventRepository extends JpaRepository<Event, Long> {
    List<Event> findByEventTypeAccount(Account account);
}

私がしたいことは、1つの日付を渡し、その日付がstartendの間にあることを確認する必要があることです。 startendの間)

findDateisBetweenStartAndEnd(Date date)のようなものですか?

33
doN

ご覧ください リファレンスドキュメント 。それはよく説明されています。

あなたの場合、2つのパラメータを渡す必要があるため、間に使用することはできません

Between-findByStartDateBetween…where x.startDate between?1 and?2

あなたの場合は、LessThanまたはLessThanEqualGreaterThanまたはGreaterThanEqualの組み合わせを使用してください。

  • LessThan/LessThanEqual

LessThan-findByEndLessThan…where x.start <?1

LessThanEqual findByEndLessThanEqual…ここで、x.start <=?1

  • GreaterThan/GreaterThanEqual

GreaterThan-findByStartGreaterThan…where x.end>?1

GreaterThanEqual-findByStartGreaterThanEqual…ここで、x.end> =?1

演算子AndOrを使用して、両方を組み合わせることができます。

65
Pau

私はこれに次の解決策を使用しました:

findAllByStartDateLessThanEqualAndEndDateGreaterThanEqual(OffsetDateTime endDate, OffsetDateTime startDate);
25

@Queryを使用してカスタムクエリを作成することもできます

@Query(value = "from EntityClassTable t where yourDate BETWEEN :startDate AND :endDate")
public List<EntityClassTable> getAllBetweenDates(@Param("startDate")Date startDate,@Param("endDate")Date endDate);
7
Vikash Kumar