Heim >Datenbank >MySQL-Tutorial >Wie filtere ich SQLAlchemy-Datumsfelder für Altersbereichsabfragen richtig?

Wie filtere ich SQLAlchemy-Datumsfelder für Altersbereichsabfragen richtig?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-21 04:09:10820Durchsuche

How to Correctly Filter SQLAlchemy Date Fields for Age Range Queries?

SQLAlchemy: Filtern von Datumsfeldern

In SQLAlchemy erfordert das Filtern basierend auf Datumsfeldern sorgfältige Überlegungen. Lassen Sie uns untersuchen, wie Sie richtig zwischen zwei Daten filtern, um Daten innerhalb eines bestimmten Altersbereichs zu extrahieren.

Modellieren des Datumsfelds

Angenommen, Sie haben ein Benutzermodell mit einem Geburtstagsfeld Als Datumsdatentyp definiert, wird er in der Datenbank als Zeichenfolge im Format „JJJJ-MM-TT“ dargestellt, z. B. '1987-01-17'.

Filtern nach Altersgruppe

Um alle Benutzer innerhalb einer bestimmten Altersgruppe auszuwählen, sagen wir 18 bis 30 Jahre, müssen wir Folgendes tun Vergleichen Sie ihre Geburtstage mit den entsprechenden Daten, die den Anfang und das Ende dieses Bereichs darstellen.

Falsch Ansatz

Ihre erste Abfrage enthält, obwohl konzeptionell korrekt, einen Tippfehler, der die Ungleichheitssymbole umkehrt:

query = DBSession.query(User).filter(
  and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17')
)

Diese Abfrage schließt alle Datensätze aus, da nach Benutzern gesucht wird, deren Geburtstage beide sind größer oder gleich „17.01.1988“ und kleiner oder gleich „17.01.1985“ ist unmöglich.

Richtiger Ansatz

Um richtig zu filtern, kehren Sie einfach die Ungleichheitssymbole um:

qry = DBSession.query(User).filter(
  and_(User.birthday <= '1988-01-17', User.birthday >= '1985-01-17')
)

Alternativ können Sie den integrierten Methode between():

qry = DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))

Beide Ansätze geben Benutzer zurück, deren Geburtstage in den angegebenen Datumsbereich fallen, der den gewünschten darstellt Altersintervall.

Das obige ist der detaillierte Inhalt vonWie filtere ich SQLAlchemy-Datumsfelder für Altersbereichsabfragen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn