小编典典

在Filter SQLAlchemy中进行DateTime比较

sql

我对SQLAlchemy中的过滤有些困惑。

我目前正在尝试过滤超过10周的条目,所以我有

current_time = datetime.datetime.utcnow()

potential = session.query(Subject).filter(Subject.time < current_time - datetime.timedelta(weeks=10))

但是,potential.count()始终返回0

我的理论是我没有正确使用filter语句,因为当我尝试使用非类型的列Column(DateTime())而是

列(字符串(250))

喜欢

 potential = session.query(Subject).filter(Subject.string_field < current_time - datetime.timedelta(weeks=10))

SQLAlchemy仍然不会抱怨。

另外,当我进行手动检查时

curr_time - session.query(Subject).first().time > datetime.timedelta(weeks=10)

我明白True这意味着不应该计数0

我缺少明显的东西吗?任何帮助,将不胜感激。


阅读 354

收藏
2021-04-15

共1个答案

小编典典

如果您将其切换<为a >,则可以获取最近十周内的所有主题:

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()

过滤器生成一个WHERE子句,其中 包含 与子句匹配的结果。因此,结果不是“过滤掉”的,而是包括在内的。

2021-04-15