Как запросить все записи за последние 6 часов (datetime) в GQL? - PullRequest
14 голосов
/ 15 июня 2009

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

Ответы [ 2 ]

18 голосов
/ 15 июня 2009

Я знаю, вы говорите GQL, но вот вспомогательная функция Python, которую я использую:

import datetime
def seconds_ago(time_s):
    return datetime.datetime.now() - datetime.timedelta(seconds=time_s)

Возможно, есть более лаконичный способ написать это: я не эксперт по питонам и пошел с первым, что сработало. Посмотрите документы на дату и время, если вам не все равно. Используется так:

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
13 голосов
/ 15 июня 2009
SELECT * FROM simpletable
WHERE datefield < DATETIME(year, month, day, hour, minute, second)

вычисление того года, месяца и т. Д. В коде приложения.

...