我在这个查询中做错了什么?
SELECT * FROM TreatmentPlanDetails 
WHERE 
   accountId = 'ag5zfmRvbW9kZW50d2ViMnIRCxIIQWNjb3VudHMYtcjdAQw' AND 
   status = 'done' AND 
   category = 'chirurgia orale' AND
   setDoneCalendarEventStartTimestamp >= [timestamp for 6 june 2012]  AND 
   setDoneCalendarEventStartTimestamp <= [timestamp for 11 june 2012]  AND 
   deleteStatus = 'notDeleted' 
ORDER BY setDoneCalendarEventStartTimestamp ASC我没有得到任何记录,但我确信有符合where子句条件的记录。为了获得正确的记录,我必须将时间戳间隔扩大1毫秒。正常吗?此外,如果我通过删除类别过滤器来修改此查询,我将获得正确的结果。这绝对很奇怪。我也在谷歌群组上询问过,但没有得到任何答复。无论如何,有关详细信息:https://groups.google.com/forum/?fromgroups#!searchin/google-appengine/query/google-appengine/ixPIvmhCS3g/d4OP91yTkrEJ
发布于 2012-06-14 22:56:18
让我们专门讨论一下如何创建时间戳以进入查询。您使用什么代码来创建时间戳记录?显然,这一点很重要,因为使用它进行模糊处理会稍微影响查询。可能相关的是,在数据存储中,时间戳被记录为用微秒表示posix时间戳的整数,即自1970UTC 1/1/1970以来的微秒数(不包括闰秒)。同样相关的是,日期(即没有时间)表示为午夜,即当天最早的时间。但请给我们看确切的代码。(显示您试图检索的记录的实际内容也可能很重要。)
发布于 2012-06-14 23:58:32
非特定于您的问题的旁白:实体属性名称算作您的存储配额的一部分。如果这将是一个巨大的数据集,您可能会为像setDoneCalendarEventStartTimestamp这样的属性名称支付比您想要的更多的$$。
发布于 2012-06-14 19:23:16
因为你写道:
如果我通过删除类别过滤器来修改此查询,我将获得正确的结果
这可能意味着,在您将匹配的记录写入数据存储时,该类别尚未编制索引。如果希望将记录添加到新创建的索引中,则必须将记录重写到数据存储中。
https://stackoverflow.com/questions/11031053
复制相似问题