我有以下简单的设置,其中 fromDate 和 toDate 是格式为“YYYY-MM-DD”的字符串:

class SomeType(Base):
    date = Column(DateTime)

def findAll(fromDate, toDate):
    return session.query(SomeType).filter(SomeType.date >= fromDate, SomeType.date <= toDate).all()

问题是它找不到我想要它找到的东西,除非我像这样修改输入日期:
def findAll(fromDate, toDate):
    fromDate = fromDate + " 00:00"
    toDate = toDate + " 24:00"
    return session.query(SomeType).filter(SomeType.date >= fromDate, SomeType.date <= toDate).all()

但这看起来不太好。关于我如何以正确的方式做到这一点的任何想法?

最佳答案

使用 datetime.datetime 对象而不是 fromDatetoDate 的字符串怎么样?

from datetime import datetime, timedelta

def findAll(fromDate, toDate):
    fromDate = datetime.strptime(fromDate, '%Y-%m-%d')
    toDate = datetime.strptime(toDate, '%Y-%m-%d') + timedelta(days=1)
    return session.query(SomeType).filter(
        SomeType.date >= fromDate,
        SomeType.date < toDate).all()

关于python - 如何比较sqlalchemy中的日期?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21301934/

10-12 20:26