Python 在谷歌应用程序引擎中按日期过滤';s数据存储

Python 在谷歌应用程序引擎中按日期过滤';s数据存储,python,google-app-engine,Python,Google App Engine,我在尝试按日期筛选一组对象时遇到了一些问题。现在我可以得到所有的 用户的事务如下所示: > t = Transaction.all().filter("client_email =", "some_email").filter("application_id =", "foo").fetch(100) > len(t) # => 4 现在,如果我想设置一些日期过滤器: > min = datetime.datetime(2009, 2, 3, 0, 0) > ma

我在尝试按日期筛选一组对象时遇到了一些问题。现在我可以得到所有的 用户的事务如下所示:

> t = Transaction.all().filter("client_email =", "some_email").filter("application_id =", "foo").fetch(100)
> len(t)
# => 4
现在,如果我想设置一些日期过滤器:

> min = datetime.datetime(2009, 2, 3, 0, 0)
> max = datetime.datetime(2009, 11, 4, 0, 0)

> len(Transaction.gql("WHERE client_email =:1 AND date >:2 AND date <=:3 AND application_id =:4", 
                      "some_email", min, max, "foo").fetch(100))
# => 2
是的,所有这些交易都是在2009年10月完成的。我用Python过滤它们只是为了确认 这是正确的:

> trans = filter(lambda x: x.date < max and x.date >= min, t)
> len(trans)
# => 4
>trans=filter(λx:x.date=min,t)
>len(trans)
# => 4
是的,它们都有正确的日期,但由于我查询中的某些内容,结果与
预期结果,是否知道查询中可能有什么错误?

您是否尝试使查询日期信息符合?。例如语法:

DATETIME(year, month, day, hour, minute, second)
DATETIME('YYYY-MM-DD HH:MM:SS')
DATE(year, month, day)
DATE('YYYY-MM-DD')
TIME(hour, minute, second)
TIME('HH:MM:SS')
尝试运行以下GQL:

"WHERE client_email =:1 AND date > DATE(:2) AND date <= DATE(:3) AND application_id =:4", "some_email", "2009-02-03", "2009-11-04", "foo"

“其中客户端电子邮件=:1和日期>日期(:2)和日期可能客户端电子邮件或应用程序id不是您认为的那样?可能您的意思是
=
(如您在以后的代码中所述),而不是
(如您在查询中所述)?@Jonathan:这两个示例中的排序不同,但您可以看到这些日期仍应在该范围内。请注意属性:您可以看到,仅通过应用程序id和客户端电子邮件进行过滤会返回4个结果,而不是2个,因此问题在于日期。您是否在非工作示例中显示了所有gql?是否有详细信息所有这些都不同?有排序吗?这就是我现在正在做的确切查询,唯一的区别是我隐藏了用户的电子邮件和应用程序id。其他所有细节都是从应用程序复制/粘贴的。好吧,只是为了好玩,添加一个带有日期的
order by
子句,看看这是否有帮助。这不会有任何区别,除了使事情复杂化。
"WHERE client_email =:1 AND date > DATE(:2) AND date <= DATE(:3) AND application_id =:4", "some_email", "2009-02-03", "2009-11-04", "foo"