2017-11-10 13 views
1

날짜 범위 내의 모든 엔티티를 쿼리하려고합니다. 내 이해는 당신이 하나의 datetime 속성에 두 개의 부등식 필터를 가질 수 있지만 그것은 나를 위해 작동하지 않습니다.GAE NDB 날짜 범위 쿼리가 예상대로 작동하지 않습니다.

앞으로 2-3 일 이내에 모든 엔터티를 쿼리하려고합니다. 날짜 범위 다음에 1, 3, 1이라는 5 개의 항목을 생성했습니다. 여기

# Define the date range 
today = datetime.combine(datetime.utcnow(), time(0)) 
d2 = today + timedelta(days=2) 
d3 = today + timedelta(days=3) 
print "Start:", d2 
print "End:", d3 

print "All" 
entities = models.Entity.query() 
for e in entities: 
    print e.my_date 

print "Range" 
entities = models.Entity.query(Entity.my_date >= d2 and Entity.my_date <= d3) 
for e in entities: 
    print e.my_date 

print "After" 
entities = models.Entity.query(Entity.my_date >= d2) 
for e in entities: 
    print e.my_date 

print "Before" 
entities = models.Entity.query(Entity.my_date <= d3) 
for e in entities: 
    print e.my_date 

위의 결과이다 : 5 엔티티를 생성 한 후, 나는 쿼리를 테스트하려면 다음을 실행

Start: 2017-11-12 00:00:00 
End: 2017-11-13 00:00:00 
All 
2017-11-11 23:00:00 
2017-11-12 01:00:00 
2017-11-12 06:00:00 
2017-11-12 12:00:00 
2017-11-13 01:00:00 
Range 
2017-11-11 23:00:00 # Why is this selected by the query? 
2017-11-12 01:00:00 
2017-11-12 06:00:00 
2017-11-12 12:00:00 
After 
2017-11-12 01:00:00 
2017-11-12 06:00:00 
2017-11-12 12:00:00 
2017-11-13 01:00:00 
Before 
2017-11-11 23:00:00 
2017-11-12 01:00:00 
2017-11-12 06:00:00 
2017-11-12 12:00:00 
날짜 범위 쿼리가 포함되어 이유를 알아낼 수 없습니다

엔티티가 날짜 범위를 벗어났습니다.

답변

2

아, 방금 범위 쿼리

entities = models.Entity.query(ndb.AND(Entity.my_date >= d2, Entity.my_date <= d3)) 
+0

을해야 나는 보통 각 조건에 대해() .filter 사용할 수 있도록 쿼리에 대해 특별한 ndb.AND 있습니다 ... 그것을 알아 냈다. 필터 (Entity.my_date> = d2) .filter (Entity.my_date <= d3)'models.Entity.query(). –