在 Flask-SQLAlchemy 中比较日期

Comparing Dates in 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())),这都不会 return 结果。我已经搜索了一些关于这个主题的其他答案,从我收集到的内容来看,我没有犯同样的错误。

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

TypeError: filter() got an unexpected keyword argument 'deleted'

任何指点将不胜感激。

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

NameError: global name 'time' is not defined

尝试使用日期时间模块

from datetime import datetime

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

您只需要更改模式以匹配您正在使用的任何格式

尝试使用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.