SQLAlchemy: how to filter date field? SQLAlchemy: how to filter date field? python python

SQLAlchemy: how to filter date field?


In fact, your query is right except for the typo: your filter is excluding all records: you should change the <= for >= and vice versa:

qry = DBSession.query(User).filter(        and_(User.birthday <= '1988-01-17', User.birthday >= '1985-01-17'))# or same:qry = DBSession.query(User).filter(User.birthday <= '1988-01-17').\        filter(User.birthday >= '1985-01-17')

Also you can use between:

qry = DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))


if you want to get the whole period:

    from sqlalchemy import and_, func    query = DBSession.query(User).filter(and_(func.date(User.birthday) >= '1985-01-17'),\                                              func.date(User.birthday) <= '1988-01-17'))

That means range: 1985-01-17 00:00 - 1988-01-17 23:59


from app import SQLAlchemyDB as dbChance.query.filter(Chance.repo_id==repo_id,                     Chance.status=="1",                     db.func.date(Chance.apply_time)<=end,                     db.func.date(Chance.apply_time)>=start).count()

it is equal to:

select   count(id)from   Chancewhere   repo_id=:repo_id    and status='1'   and date(apple_time) <= end   and date(apple_time) >= start

wish can help you.