Wie alle Einträge aus den vergangenen 6 Stunden (datetime) in GQL abfragen?
-
13-09-2019 - |
Frage
Ich habe eine einfache Tabelle in Google App Engine mit einem Datumsfeld. Ich möchte alle Zeilen mit dem Datumsfeld abzufragen geschätzt zwischen jetzt und 6 Stunden. Wie kann ich diese Abfrage bilden?
Lösung
SELECT * FROM simpletable
WHERE datefield < DATETIME(year, month, day, hour, minute, second)
Berechnung diejenigen Jahr, Monat, usw, im Anwendungscode.
Andere Tipps
Ich weiß, Sie sagen GQL, aber hier ist eine Python-Hilfsfunktion verwende ich:
import datetime
def seconds_ago(time_s):
return datetime.datetime.now() - datetime.timedelta(seconds=time_s)
Es kann auch eine prägnante Art und Weise, es zu schreiben: Ich bin nicht ein Python-Experte und ging mit der ersten Sache, die funktionierte. Werfen Sie einen Blick auf die Datetime-Dokumentation, wenn Sie sich interessieren. Es wird wie folgt verwendet:
my_query = MyTable.all().filter("date >", seconds_ago(6*60*60))
Ich bin sicher, dass übersetzt werden kann, um GQL ohne viel Mühe, aber ich ziehe die objektorientierte Schnittstelle, und ich weiß nicht, die notwendige DATETIME- Syntax.
In Python die Abfrage wird dann wie folgt verwendet:
# get a count
my_query.count()
# get up to 1000 records
my_query.fetch(1000)
# iterate over up to 1000 records
for result in my_query:
# do something with result