【问题标题】:Doing DateTime Comparisons in Filter SQLAlchemy在过滤器 SQLAlchemy 中进行日期时间比较
【发布时间】:2013-07-25 21:06:22
【问题描述】:

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

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

current_time = datetime.datetime.utcnow()

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

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

我的理论是我没有正确使用过滤器语句,因为当我尝试使用不是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

我是否遗漏了一些明显的东西?任何帮助将不胜感激。

【问题讨论】:

    标签: python sql sqlalchemy


    【解决方案1】:

    如果您将&lt; 切换为&gt;,您可以获得过去十周内的所有科目:

    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 子句,其中包括 匹配该子句的结果。所以结果不是“过滤掉”而是包含在内。

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 2021-03-05
      • 2019-05-18
      • 2023-04-05
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      相关资源
      最近更新 更多