Как запросить все записи за последние 6 часов (datetime) в GQL?

У меня есть простая таблица в Google App Engine с полем даты. Я хочу запросить все строки с полем даты, оцененным между настоящим и 6 часами назад. Как мне сформировать этот запрос?

Ответы

Ответ 1

SELECT * FROM simpletable
WHERE datefield < DATETIME(year, month, day, hour, minute, second)

вычисляющих эти год, месяц, и c, в вашем коде приложения.

Ответ 2

Я знаю, что вы говорите 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