How to query all entries from past 6 hours ( datetime) in GQL?

此生再无相见时 提交于 2019-11-27 02:12:51

问题


I have a simple table in Google App Engine with a date field. I want to query all the rows with the date field valued between now and 6 hours ago. How do I form this query?


回答1:


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

computing those year, month, &c, in your application code.




回答2:


I know you say GQL, but here's a python helper function I use:

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

There may well be a more concise way to write it: I'm not a python expert and went with the first thing that worked. Take a look at the datetime docs if you care. It's used like this:

my_query = MyTable.all().filter("date >", seconds_ago(6*60*60))

I'm sure that can be translated to GQL without much bother, but I prefer the object-oriented interface, and I don't know the necessary DATETIME syntax.

In python the query is then used like this:

# 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


来源:https://stackoverflow.com/questions/994187/how-to-query-all-entries-from-past-6-hours-datetime-in-gql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!