比较Flask-SQLAlchemy中的日期

时间:2015-03-23 23:37:18

标签: python flask flask-sqlalchemy

我一直在尝试比较给SQLALchemy的查询中的日期,如下所示:

start = time.strptime(start, "%d%m%y")
end = time.strptime(end, "%d%m%y")
list_ideas = Idea.query.filter(time >= start, time <= end).all()

但是,无论给定的日期(Idea.time = db.Column(db.DateTime, default=db.func.now())),这都不会返回结果。我已经搜索了关于这个主题的其他一些答案,从我收集的内容中,我没有犯同样的错误。

此外,将查询更改为Idea.query.filter(time >= start, time <= end, deleted=False).all()会出现错误:

  

TypeError:filter()获得了意外的关键字参数&#39;已删除&#39;

任何指针都会受到赞赏。

-
编辑:我注意到我使用import time,这可能导致错误。但是,在将其更改为from time import strptime后,我现在遇到错误:

  

NameError:全球名称&#39; time&#39;未定义

2 个答案:

答案 0 :(得分:3)

尝试使用datetime模块

from datetime import datetime

Idea.query.filter(Idea.time >= datetime.strptime(start, '%Y-%m-%d'),
                  Idea.time <= datetime.strptime(end, '%Y-%m-%d')).all()

您只需要更改模式以匹配您使用的格式

答案 1 :(得分:0)

尝试使用 func.DATE() 函数:

from sqlalchemy import func

start = time.strptime(start, "%d%m%y")
end = time.strptime(end, "%d%m%y")
list_ideas = Idea.query.filter(func.DATE(time) >= start, func.DATE(time) <= end).all()

参考类似的issue