如何在 GQL 中查询过去 6 小时(日期时间)的所有条目?
Posted
技术标签:
【中文标题】如何在 GQL 中查询过去 6 小时(日期时间)的所有条目?【英文标题】:How to query all entries from past 6 hours ( datetime) in GQL? 【发布时间】:2010-11-02 21:52:42 【问题描述】:我在 Google App Engine 中有一个带有日期字段的简单表格。我想查询从现在到 6 小时前的日期字段值的所有行。我如何形成这个查询?
【问题讨论】:
编辑标题以使其对 Google 更友好.. 【参考方案1】:我知道你说的是 GQL,但这是我使用的一个 python 辅助函数:
import datetime
def seconds_ago(time_s):
return datetime.datetime.now() - datetime.timedelta(seconds=time_s)
很可能有一种更简洁的方式来编写它:我不是 python 专家,而是选择了第一个可行的方法。如果您关心,请查看日期时间文档。它是这样使用的:
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
【讨论】:
【参考方案2】:SELECT * FROM simpletable
WHERE datefield < DATETIME(year, month, day, hour, minute, second)
在您的应用程序代码中计算这些年份、月份等。
【讨论】:
您如何获得该查询的计数? 在 Python App Engine 中,您可以从中创建一个 GqlQuery 并在其上调用 .count() 方法;无法将 COUNT 直接放入 Gql 本身。 请注意,计数效率低下 - 计数实体的数量为 O(n),在 App Engine 中,计数不能超过 1000。以上是关于如何在 GQL 中查询过去 6 小时(日期时间)的所有条目?的主要内容,如果未能解决你的问题,请参考以下文章