GAE NDB 日期范围查询未按预期工作
GAE NDB date range query not working as expected
我正在尝试查询日期 运行ge 内的所有实体。我的理解是你可以在一个日期时间上有两个不等式过滤器 属性,但它对我不起作用。
我正在尝试查询未来 2-3 天日期的所有实体。我创建了 5 个实体,1 个在日期 运行ge 之前,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
以上结果如下:
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
我不明白为什么日期 运行ge 查询包含日期 运行ge 之外的实体。
啊,我刚弄明白...查询有一个特殊的ndb.AND
,所以范围查询应该是
entities = models.Entity.query(ndb.AND(Entity.my_date >= d2, Entity.my_date <= d3))
我正在尝试查询日期 运行ge 内的所有实体。我的理解是你可以在一个日期时间上有两个不等式过滤器 属性,但它对我不起作用。
我正在尝试查询未来 2-3 天日期的所有实体。我创建了 5 个实体,1 个在日期 运行ge 之前,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
以上结果如下:
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
我不明白为什么日期 运行ge 查询包含日期 运行ge 之外的实体。
啊,我刚弄明白...查询有一个特殊的ndb.AND
,所以范围查询应该是
entities = models.Entity.query(ndb.AND(Entity.my_date >= d2, Entity.my_date <= d3))