Ich habe einige Probleme, die versuchen, eine Reihe von Objekten nach ihrem Datum zu filtern. Im Moment kann ich alle Transaktionen eines Transaktionen eines Benutzers wie folgt:
> t = Transaction.all().filter("client_email =", "some_email").filter("application_id =", "foo").fetch(100)
> len(t)
# => 4
Wenn ich nun einige Datumsfilter einrichten möchte:
> 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
Ich weiß, dass alle diese Transaktionen ein Datum < max && > min haben:
> 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)]
Ja, alle diese Transaktionen wurden im Oktober 2009 durchgeführt. Ich habe sie in Python gefiltert, um zu bestätigen dass es richtig war:
> trans = filter(lambda x: x.date < max and x.date >= min, t)
> len(trans)
# => 4
Also ja, sie haben alle die richtigen Daten, aber wegen etwas in meiner Abfrage stimmen die Ergebnisse nicht mit den erwarteten Ergebnisse. Haben Sie eine Idee, was in der Abfrage falsch sein könnte?