2
我在尝试按日期过滤一组objets时遇到了一些问题。现在,我可以得到全部 用户的交易是这样的:在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)
> 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
我知道所有的这些交易有个约会<最大& &>分钟:
> map(lambda x: x.date, t)
# => [datetime.datetime(2009, 10, 2, 22, 43, 51), datetime.datetime(2009, 10, 5, 2, 5, 24), datetime.datetime(2009, 10, 7, 16, 51, 5), datetime.datetime(2009, 10, 7, 16, 6, 53)]
是啊,所有这些交易作了2009年10月我过滤它们P中ython只是为了确认 ,这是正确的:
> trans = filter(lambda x: x.date < max and x.date >= min, t)
> len(trans)
# => 4
所以,是的,它们都具有正确的日期,但由于我的一些查询的结果不匹配 预期的结果,什么可能是任何想法查询错误?
也许client_email或者不是你认为他们是APPLICATION_ID?或许你的意思是'<' and '> ='(如你在后面的代码中)而不是'<=' and '>'(就像你在查询中那样)? – 2009-11-03 18:02:42
@Jonathan:这两个例子的顺序都不一样,但你可以看到那些日期应该仍然在这个范围内。 WRT的属性:你可以看到,只有通过application_id和client_email过滤返回4结果,而不是2,所以问题是在日期。 – 2009-11-03 19:37:40
你是否在非工作示例中显示了所有的gql?有什么不同的细节吗?有没有排序? – 2009-11-03 20:16:28