按日期(字符串)为 GAE 排序查询结果

Ordering Query results by Date (String) for GAE

我在 GAE 数据存储中存储了数千个实体,其中一个字段 "create" 被保存为日期 String(标准格式)。

我的问题是,是否仍然可以像这样Query

Query q = new Query("Post")
                .addSort("created", SortDirection.DESCENDING);

其中“created”其实是一个日期字符串,存储方式如下:2014-12-11T14:31:43 -08:00" 实际上得到一个降序。我试过了,但结果集是随机的,甚至没有按日期排序。

有没有办法调整 GAE Query 以使用此数据实现此目的?

那样不行。

您需要 属性 为日期类型。

import java.util.Date;

Date created = new Date();
Post.setProperty("created", created);

也许你可以做一个任务来更新你所有的实体,创建的字符串实际上被转换为日期并保存它。

即使 GAE 已将日期索引为字符串,所以 '2014-12-11T14:31:43 -08:00' 出现在 '2014-12-[=14 之后=]04T14:31:43 -08:00'(仅作为示例)这意味着应该遵循自然排序顺序。

您是否已将 'created' 字段编入索引?否则,GAE 将忽略您在查询中给出的排序顺序。