Maison > base de données > tutoriel mysql > Comment filtrer correctement les champs de date SQLAlchemy pour les requêtes par tranche d'âge ?

Comment filtrer correctement les champs de date SQLAlchemy pour les requêtes par tranche d'âge ?

Mary-Kate Olsen
Libérer: 2024-12-21 04:09:10
original
816 Les gens l'ont consulté

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

SQLAlchemy : Filtrage des champs de date

Dans SQLAlchemy, le filtrage basé sur les champs de date nécessite un examen attentif. Explorons comment filtrer correctement entre deux dates pour extraire des données dans une tranche d'âge spécifiée.

Modélisation du champ de date

En supposant que vous disposez d'un modèle utilisateur avec un champ d'anniversaire défini comme type de données Date, il est représenté dans la base de données sous la forme d'une chaîne au format « AAAA-MM-JJ », par exemple : '1987-01-17'.

Filtrage par tranche d'âge

Pour sélectionner tous les utilisateurs dans une tranche d'âge spécifique, disons 18 à 30 ans, nous devons comparez leurs anniversaires aux dates correspondantes qui représentent le début et la fin de cette plage.

Incorrect Approche

Votre requête initiale, bien que conceptuellement correcte, contient une faute de frappe qui inverse les symboles d'inégalité :

query = DBSession.query(User).filter(
  and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17')
)
Copier après la connexion

Cette requête exclut tous les enregistrements car elle recherche les utilisateurs dont les anniversaires sont tous les deux supérieur ou égal à « 1988-01-17 » et inférieur ou égal à « 1985-01-17 », qui est impossible.

Approche correcte

Pour filtrer correctement, inversez simplement les symboles d'inégalité :

qry = DBSession.query(User).filter(
  and_(User.birthday <= '1988-01-17', User.birthday >= '1985-01-17')
)
Copier après la connexion

Vous pouvez également utiliser le module intégré Méthode between() :

qry = DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))
Copier après la connexion

Les deux approches renverront les utilisateurs dont les anniversaires se situent dans la plage de dates spécifiée, représentant l'âge souhaité intervalle.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal