0

这是从我在 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)

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

我究竟做错了什么 ?

4

1 回答 1

0

您查询状态:

WHERE scheduledFrom < :tomorrow AND scheduledFrom > :yesterday

明天和昨天是日期时间。时间设置为 00:00:00,因此结果将包括 2016 年 2 月 19 日的日期,其中时间大于 00:00:00。

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

records = db.GqlQuery("SELECT * FROM ProgrammeQueue"
         " WHERE scheduledFrom < :1 AND scheduledFrom >= :2 "
         " ORDER BY scheduledFrom DESC", 
         tomorrow, today)
于 2016-02-21T10:50:04.340 回答