按日期GQL SELECT

时间:2012-03-14 10:57:19

标签: google-app-engine

我有这个型号:

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

2 个答案:

答案 0 :(得分:8)

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

  

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

     
      
  • 日期时间,日期或时间字面值,带有数值或a   字符串表示形式,采用以下形式:

         

    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)

对于datetime,默认情况下将时间设置为00:00,因此相等比较将失败,因此您必须使用>比较

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

答案 1 :(得分:0)

如果有人需要查找日期时间,则可以在GQL中为我使用:

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

我希望它对任何人都有帮助