如何使用特定的月份和年份查询具有日期字段的对象?

时间:2010-01-22 12:07:49

标签: python django google-app-engine

我需要针对一组具有日期字段的对象进行gql查询。我对python和GAE都很新,所以我对此有点讽刺。我正在查看文档,但找不到我想要的东西。基本上我已经制作了以下类方法

Event.getEventsForMonth(cls, month,year):

所以我试图查询我的对象,其中日期字段的月份和年份落在指定范围内。我试图创建一个日期对象并将其用于比较,但到目前为止我没有任何喜悦。

dateto = str(year)+str(month+1)+"01"
datefrom = str(year)+str(month)+"01"
if month + 1 == 13:
    dateto = str(year+1)+"01"+"01"

query = GqlQuery("SELECT * FROM Event WHERE date >= :datefrom AND date <= :dateto", dateto=dateto, datefrom=datefrom)
return query

对我来说这个方法看起来很糟糕,因为我对Python内联的GQL查询可以使用的核心方法不太了解。

感谢任何帮助

干杯,

安德鲁

1 个答案:

答案 0 :(得分:3)

首先,将日期存储为数据存储区中的DateProperty或DateTimeProperty实例。

然后,您可以执行以下查询:

def getEventsForMonth(self, month, year):
  start_date = datetime.datetime(year, month, 1)
  if month == 12:
    end_date = datetime.datetime(year + 1, 1, 1)
  else:
    end_date = datetime.datetime(year, month + 1, 1)
  return Events.all().filter('date >=', start_date).filter('date <=', end_date).fetch(1000)