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