Überprüfen Sie das Datum zwischen zwei anderen Daten Frühlingsdaten jpa

Lesezeit: 3 Minuten

Benutzer-Avatar
Don José

Ich habe dieses Modell:

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

und Repository als

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

Was ich tun möchte, ist, ich werde ein Datum passieren und muss überprüfen, ob das Datum dazwischen liegt start und end zB (Ich übergebe den 30. September als Datum und muss alle Einträge finden, die den 30. September zwischen sich haben start und end)

Etwas wie findDateisBetweenStartAndEnd(Date date)?

Benutzer-Avatar
Pau

Sie sollten einen Blick darauf werfen die Referenzdokumentation. Es ist gut erklärt.

In Ihrem Fall können Sie meiner Meinung nach nicht between verwenden, da Sie zwei Parameter übergeben müssen

Zwischen – findByStartDateBetween … wobei x.startDate zwischen ?1 und ?2 liegt

Versuchen Sie in Ihrem Fall, eine Kombination aus zu verwenden LessThan oder LessThanEqual mit GreaterThan oder GreaterThanEqual

  • LessThan/LessThanEqual

LessThan – findByEndLessThan … wo x.start< ?1

LessThanEqual findByEndLessThanEqual … wobei x.start <= ?1

  • Größer als/Größer als gleich

GreaterThan – findByStartGreaterThan … wo x.end> ?1

GreaterThanEqual – findByStartGreaterThanEqual … wo x.end>= ?1

Sie können den Operator verwenden And und Or beides zu kombinieren.

  • Hallo, wird dies mit String Values ​​möglich sein? Also zum Beispiel mit einer Personentabelle und alles auswählen zwischen Nachname = “abcd” bis Nachname = “efgh”

    – Elfenbein

    12. September 2018 um 14:26 Uhr


  • @Pau Sollten nicht die Methodennamen sein findByStartLessThan\Equal und findByStartGreaterThan\Equal es entspricht also dem JPQL (dh where x.start <\= ?1und where x.end >\= ?1)?

    – Schnuckelbert

    12. Februar 2019 um 13:02 Uhr


  • Können Sie mir bitte sagen, welches Datumsformat Sie vom Client an den Call-Controller der Methode findDateisBetweenStartAndEnd übergeben? Ich habe mich an den Formatteil gehalten, als ich die Anfrage über den Client für den Endpunkt einreichte.

    – Indrajeet Gour

    19. September 2019 um 19:51 Uhr

  • Wie füge ich eine Where-Bedingung für ein anderes Attribut hinzu? zwischen und wo zusammen in einer einzigen Abfrage in Spring Data JPA?

    – Sumanth Varada

    21. November 2019 um 16:57 Uhr


Benutzer-Avatar
Michael Cuypers

Ich habe dazu folgende Lösung verwendet:

findAllByStartDateLessThanEqualAndEndDateGreaterThanEqual(OffsetDateTime endDate, OffsetDateTime startDate);

  • Fügst du bitte eine kleine (detailliertere) Erklärung hinzu?

    – Yannick Huber

    8. März 2018 um 10:38 Uhr

  • aber dafür sollte man zwei termine durchgehen den anfang und den schluss, ich denke das ist der richtige ansatz

    – Elfenbein

    24. Januar 2019 um 11:49 Uhr

  • Die Reihenfolge der Kinderwagen ist falsch. Erstens bezieht sich param auf startDate, nicht auf endDate

    – Jordan Silva

    20. Mai 2020 um 11:38 Uhr

  • @JordanSilva, die Reihenfolge der Parameter ist korrekt, da getestet wird, dass nur ein Zeitraum über einen anderen gekreuzt wird, der andere Zeitraum jedoch nicht vollständig innerhalb des Prüfzeitraums liegt.

    – Nemo

    16. Januar 2021 um 13:14 Uhr

Benutzer-Avatar
Vikash Kumar

Sie können auch eine benutzerdefinierte Abfrage schreiben, indem Sie verwenden @Query

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

Bearbeiten: Für LocalDateTime habe ich gerade diese Lösung zum Filtern von Datensätzen basierend auf Datum und Typ im Frühjahr JPA ausprobiert:

Page<MyEntity> findMyEntityByEntityDateBetweenAndType(
            @Param("startDate") LocalDateTime startDate,
            @Param("endDate") LocalDateTime endDate, @Param("type") String type, Pageable pageable);

Hier kann EntityDate wie CreatedDate, ModifiedDate usw. sein.

  • Wie wird es mit null Start- und Enddatum umgehen?

    – saran3h

    1. April 2021 um 16:07 Uhr

Vielleicht könntest du es versuchen

List<Article> findAllByPublicationDate(Date publicationDate);

Das Detail könnte in diesem Artikel überprüft werden:

https://www.baeldung.com/spring-data-jpa-query-by-date

Sie können JpaRepository verwenden

List<Entity> findByColumnDateBetween(LocalDateTime to, LocalDateTime from);

  • warum in umgekehrter Reihenfolge (nach,von) statt (von,nach) ?

    – Ranjithkumar

    4. August um 10:42 Uhr

  • @Ranjithkumar vielleicht, weil manche Leute es lieben, Moonwalk zu tanzen;)

    – BendaThierry.com

    Vor 17 Stunden

  • warum in umgekehrter Reihenfolge (nach,von) statt (von,nach) ?

    – Ranjithkumar

    4. August um 10:42 Uhr

  • @Ranjithkumar vielleicht, weil manche Leute es lieben, Moonwalk zu tanzen;)

    – BendaThierry.com

    Vor 17 Stunden

1226170cookie-checkÜberprüfen Sie das Datum zwischen zwei anderen Daten Frühlingsdaten jpa

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy