我想知道当月发生的订阅事件(我正在关注的事件)。这与它们发生在 5 年前还是一年前无关,只要它们发生在当前月份即可。我确信问题来自
Event.event_date
。如何将此字段转换为日期,strftime()
然后可以使用 '%m'
从中提取月份,然后将其与当前月份进行比较。
但是,查询没有给出当月发生的事件,但我有确实发生在四月(当月)的事件。当月要自动化,我已经通过
datetime.today().strftime('%m')
成功实现了。然后我想将这个月与同月发生的所有事件进行比较。这是完整的查询代码:
monthly_events = current_user.followed_events().filter(Event.event_date < datetime.today().date()).filter(func.strftime('%m', Event.event_date == datetime.today().strftime('%m'))).order_by(Event.timestamp.desc())
通过将查询分成几个部分,我能够知道问题出在哪里。 查询部分:
current_user.followed_events().filter(Event.event_date < datetime.today().date())
给出所有已经过去的事件(昨天及以后)。这部分工作正常。
部分:
current_user.followed_events().filter(Event.event_date < datetime.today().date()).order_by(Event.timestamp.desc())
按降序排列这些过去的事件,这部分也能正常工作。
但是,有问题的部分是:
.filter(func.strftime('%m', Event.event_date == datetime.today().strftime('%m')))
目的是过滤掉当月发生的事件,而不管它们发生的年份。
请注意,我在
from sqlalchemy import func
.的顶部导入了以下模块
from datetime import datetime
和
routes.py
event_date
中的models.py
字段存储为带有db.DateTime
的default = datetime.utcnow
。我正在使用 Flask
,带有 SQLite
db,但稍后会将其更改为 Postgresql
。
希望信息足够,否则如果需要其他信息,请告诉我。