gqlQuerry 比较日期时间对象

gqlQuerry comparing datetime objects

这里是从我在GAE上的应用程序复制的相关代码。

today = datetime.datetime.strptime(date_variable, "%d/%m/%Y")
yesterday = ref_today - datetime.timedelta(days=1)
tomorrow = ref_today + datetime.timedelta(days=1)
logging.info('%s  :  %s  :  %s', yesterday, today, tomorrow)
#2016-02-19 00:00:00  :  2016-02-20 00:00:00  :  2016-02-21 00:00:00

records = db.GqlQuery("SELECT * FROM ProgrammeQueue"
         " WHERE scheduledFrom < :1 AND scheduledFrom > :2 "
         " ORDER BY scheduledFrom DESC", 
         tomorrow, yesterday)

问题陈述: 输出:19/02/2016 和 20/02/2016 的所有记录 预期:记录 = 2016 年 2 月的所有记录

我做错了什么?

您查询状态:

WHERE scheduledFrom < :tomorrow AND scheduledFrom > :yesterday

明天和昨天是日期时间。时间设置为 00:00:00,因此结果将包括时间大于 19/02/2016 的日期 00:00:00.

也许您的查询应该重写为使用日期对象而不是日期时间对象(取决于您的模型定义)。或者您可能需要将其重写为这样的内容:

records = db.GqlQuery("SELECT * FROM ProgrammeQueue"
         " WHERE scheduledFrom < :1 AND scheduledFrom >= :2 "
         " ORDER BY scheduledFrom DESC", 
         tomorrow, today)