Как запросить все записи за последние 6 часов (дата-время) в GQL?
-
13-09-2019 - |
Вопрос
У меня есть простая таблица в Google App Engine с полем даты.Я хочу запросить все строки с полем даты, значение которого находится между настоящим моментом и 6 часами назад.Как мне сформировать этот запрос?
Решение
SELECT * FROM simpletable
WHERE datefield < DATETIME(year, month, day, hour, minute, second)
вычисление этого года, месяца и т. д. в коде вашего приложения.
Другие советы
Я знаю, вы говорите GQL, но я использую вспомогательную функцию Python:
import datetime
def seconds_ago(time_s):
return datetime.datetime.now() - datetime.timedelta(seconds=time_s)
Вполне возможно, что есть более краткий способ написать это:Я не эксперт по Python и выбрал первое, что сработало.Если вам интересно, посмотрите документацию datetime.Он используется следующим образом:
my_query = MyTable.all().filter("date >", seconds_ago(6*60*60))
Я уверен, что это можно без особого труда перевести на GQL, но я предпочитаю объектно-ориентированный интерфейс и не знаю необходимого синтаксиса DATETIME.
В Python запрос затем используется следующим образом:
# 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