如何获取日期落在特定月份SQLAlchemy中的所有对象

时间:2012-07-23 16:05:34

标签: python sqlalchemy

我有一个简单的SQLAlchemy模型:

class Event(Base):
    """ The SQLAlchemy declarative model class for a Event object. """
    __tablename__ = 'events'
    id = Column(Integer, primary_key=True)
    date = Column(DateTime)
    title = Column(Text)

如何过滤SQLAlchemy查询,以便仅返回特定月份的事件?

3 个答案:

答案 0 :(得分:9)

一个非常古老的问题,但更好的答案在这里:

from sqlalchemy import extract  

session.query(Event).filter(extract('month', Event.date)==7).all()

这会将所有记录返回到7月份的数据库事件中。

答案 1 :(得分:7)

这应该会在2012年6月找到所有活动。

import datetime
import calendar

year = 2012
month = 6

num_days = calendar.monthrange(year, month)[1]
start_date = datetime.date(year, month, 1)
end_date = datetime.date(year, month, num_days)

results = session.query(Event).filter(
    and_(Event.date >= start_date, Event.date <= end_date)).all()

答案 2 :(得分:1)

我想知道布雷迪·黄(Brady Huang)在想的同一件事。因此,请扩展@scottydelta的出色答案: 您可以将过滤器彼此堆叠。 因此,如果您要提取2018年7月以后的每个事件,则应使用

from sqlalchemy import extract  

session.query(Event).filter(extract('year', Event.date)==2018).filter(extract('month', Event.date)==7).all()