Faire des comparaisons DateTime dans le filtre SQLAlchemy
Je suis un peu confus au sujet du filtrage dans SQLAlchemy.
J'essaie actuellement de filtrer les entrées supérieures à 10 semaines, donc j'ai
current_time = datetime.datetime.utcnow()
potential = session.query(Subject).filter(Subject.time < current_time - datetime.timedelta(weeks=10))
Cependant, le potential.count()
renvoie toujours 0
.
Ma théorie est que je n'utilise pas correctement l'instruction filter car lorsque j'essaie d'utiliser une colonne qui n'est pas de type Column(DateTime())
mais plutôt
Colonne (Chaîne (250))
Comme
potential = session.query(Subject).filter(Subject.string_field < current_time - datetime.timedelta(weeks=10))
SQLAlchemy ne se plaindra toujours pas.
Aussi, quand je fais une vérification manuelle avec
curr_time - session.query(Subject).first().time > datetime.timedelta(weeks=10)
Je reçois True
ce qui implique que le compte ne devrait pas être 0
.
Est-ce que je manque quelque chose d'évident? Toute aide serait appréciée.
1 réponses
Si vous passez le <
à un >
Vous pouvez obtenir tous les sujets au cours des dix dernières semaines:
current_time = datetime.datetime.utcnow()
ten_weeks_ago = current_time - datetime.timedelta(weeks=10)
subjects_within_the_last_ten_weeks = session.query(Subject).filter(
Subject.time > ten_weeks_ago).all()
Le filtre génère une clause WHERE
Qui inclut les résultats correspondant à la clause. Si les résultats ne sont pas "filtrés", mais sont inclus.