首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Filter SQLAlchemy中执行DateTime比较

在Filter SQLAlchemy中执行DateTime比较
EN

Stack Overflow用户
提问于 2013-07-26 05:06:23
回答 1查看 49.1K关注 0票数 46

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

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

代码语言:javascript
运行
复制
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))

喜欢

代码语言:javascript
运行
复制
 potential = session.query(Subject).filter(Subject.string_field < current_time - datetime.timedelta(weeks=10))

SQLAlchemy仍然不会抱怨。

另外,当我手动检查

代码语言:javascript
运行
复制
curr_time - session.query(Subject).first().time > datetime.timedelta(weeks=10)

我得到了True,这意味着计数不应该是0

我是不是漏掉了什么明显的东西?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-26 15:11:54

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

代码语言:javascript
运行
复制
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子句,其中包含与该子句匹配的结果。因此,结果不会被“过滤掉”,而是会被包括在内。

票数 82
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17868743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档