繁体   English   中英

如何在SQLAlchemy中仅比较日期时间的日期?

[英]How can I compare just the dates of datetime in SQLAlchemy?

我在SQLAlchemy有一个查询:

weekly_schedule = WeeklyHour.query.filter(
    and_(
        WeeklyHour.start_time.in_(week_dates),
        WeeklyHour.end_time.in_(week_dates),
        WeeklyHour.employee == employee
        )
    ).all()

我正在这样获取本周的日期:

today = datetime.datetime.today()
week_dates = [today + datetime.timedelta(days=i) for i in xrange(0 - today.weekday(), 7 - today.weekday())]

这将返回datetimes当前星期的列表。 像这样:

[datetime.date(2014, 4, 7), datetime.date(2014, 4, 8), datetime.date(2014, 4, 9), datetime.date(2014, 4, 10), datetime.date(2014, 4, 11), datetime.date(2014, 4, 12), datetime.date(2014, 4, 13)]

问题是, WeeklyHour是一个datetime ,当员工开始和结束的一天。 并且week_dates是设置为now()的特定时间。 我永远不会得到结果,因为datetimetime不匹配。 我真正想要比较的是datetimedate部分。 我当前的解决方案(有效但很愚蠢)是存储datetime单独dates

而不是查询一周中的所有日期,而是以天为限制。

today = date.today()
start_of_week = today - timedelta(days=today.weekday())
start_of_following_week = start_of_week + timedelta(days=7)

weekly_schedule = WeeklyHour.query.filter(
    and_(
        WeeklyHour.start_time >= start_of_week,  # On or after Monday
        WeeklyHour.end_time < start_of_following_week, # Before next Monday
        WeeklyHour.employee == employee
        )
    ).all()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM