GQL 按日期选择

Posted

技术标签:

【中文标题】GQL 按日期选择【英文标题】:GQL SELECT by date 【发布时间】:2012-03-14 10:57:19 【问题描述】:

我有这个模型:

class Entry(db.Model):
    title = db.StringProperty()
    url = db.URLProperty()
    date = db.DateTimeProperty(auto_now=True)
    image = db.URLProperty()
    weight = db.IntegerProperty()
    category = db.StringProperty()
    desc = db.TextProperty()

我每天都有很多条目,我如何使用 GGL 只选择今天的条目? 因为这样的查询不会返回任何结果(但我知道有结果):

SELECT * FROM Entry WHERE category = 'news' and date = '2012-03-12' ORDER BY weight DESC

【问题讨论】:

【参考方案1】:

它不是保存为字符串,而是保存为类似日期时间的对象。

比较的右侧可以是以下之一:

日期时间、日期或时间文字,可以是数字值或 字符串表示,形式如下:

DATETIME(年、月、日、时、分、秒) DATETIME('YYYY-MM-DD HH:MM:SS') DATE(年、月、日) 日期('YYYY-MM-DD') TIME(时、分、秒) TIME('HH:MM:SS')

http://code.google.com/appengine/docs/python/datastore/gqlreference.html

所以在你的例子中,使用其中任何一个。

date = DATE('2012-03-12')
date = DATE(2012,03,12)

对于日期时间,时间默认设置为 00:00,因此相等比较将失败,因此您必须使用 > 进行比较

SELECT * FROM Entry WHERE date > DATETIME(yyyy,mm,dd)

【讨论】:

@LukasŠalkauskas:可能是因为您保存为日期时间,但查询为日期,假设时间为 00:00:00.000000,并且没有条目匹配。尝试 >= 进行测试,或另存为日期。 对,你的模型说的是 DateTimeProperty,所​​以你必须在 GQL 中使用 DATETIME 函数。 这些是否适用于 BigQuery - 我们收到错误“无法识别 DATE 函数”?【参考方案2】:

如果有人需要查找日期时间,它在 GQL 中对我有用:

select * from tableName where recordDate >= DATETIME('2018-10-07T00:56:36z')

希望对大家有帮助

【讨论】:

你知道如何获取 45 天前的数据吗? 告诉我这篇文章是否可以帮助你我的朋友:***.com/questions/27599557/…

以上是关于GQL 按日期选择的主要内容,如果未能解决你的问题,请参考以下文章

按 esc 后无法打开日期选择器

Mysql按日期时间的日期部分分组,并为每个日期选择具有最大日期时间的行

使用 Google 电子表格在 Google 查询语言 (GQL) 中按名称而不是字母选择列?

按最近日期订购日期-SQL 选择单个 ID

如何按期间间隔选择/排序日期?

Kohana ORM 按日期选择记录