如何在 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 小时(日期时间)的所有条目?的主要内容,如果未能解决你的问题,请参考以下文章

你如何从 Mongo 日期字段中获取 DayHours?

你如何从 Mongo 日期字段中获取 DayHours?

Python中关于日期相等的GQL查询

如何为过去 3 个月的每个日期运行查询

Azure 表存储 - 查询时间戳

如何获取过去 6 个月内为 sonarqube 创建的项目的报告?