Maison >base de données >tutoriel mysql >Comment filtrer efficacement les champs de date SQLAlchemy par plage ?

Comment filtrer efficacement les champs de date SQLAlchemy par plage ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 21:36:43591parcourir

How to Efficiently Filter SQLAlchemy Date Fields by Range?

Filtrage des champs de date SQLAlchemy

Le filtrage des champs de date dans SQLAlchemy permet une sélection précise des enregistrements dans des plages de dates spécifiées. Considérez le modèle suivant :

class User(Base):
    ...
    birthday = Column(Date, index=True)   #in database it's like '1987-01-17'
    ...

Filtrer une plage de dates

Pour filtrer les utilisateurs dans une tranche d'âge spécifique, vous pouvez tirer parti du mécanisme de filtrage de SQLAlchemy :

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

Cependant, cette approche contient une faute de frappe. Pour sélectionner des utilisateurs âgés de 18 à 30 ans, vous devez permuter les opérateurs supérieur ou égal à (>=) et inférieur ou égal à (<=) :

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

Utiliser Entre

Une approche alternative consiste à utiliser la méthode between, qui permet de spécifier directement la plage de dates :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn