2010-01-22 1 views
1

날짜 필드가있는 일부 개체 집합에 대해 gql 쿼리를 작성해야합니다. 나는 파이썬과 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 

GQL 쿼리를 사용하여 파이썬 인라인에서 사용할 수있는 핵심 메서드가별로 없기 때문에이 메서드는 끔찍한 것 같습니다.

어떤 도움 데이터 저장소에 DateProperty 또는 DateTimeProperty 인스턴스로 날짜를 저장

건배,

앤드류

답변

3

먼저 감사합니다.

그런 다음 다음과 같이 쿼리 뭔가를 할 수 있습니다

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) 
+1

timedelta 내가 단지 일뿐만까지 간다 생각 개월의 인수를 허용하지 않습니다! 구현을 위해 +1 감사하지만. –

+0

몇 달 추가하는 방법을 보여줄 수있는 답변이 더 이상 없으면 곧 답변 드리겠습니다! :-) –

+0

방법에 대해 : 경우 월 == 12 : 종료일 = datetime.datetime (월 = 1 년 = 년 + 1) - datetime.timedelta (일 = 1) 다른 : 종료일 = 날짜 .datetime (월 = 월 + 1, 년 = 연도) - datetime.timedelta (일 = 1) – dannyroa

관련 문제