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

时间:2015-01-16 07:29:33

标签: java google-app-engine google-cloud-datastore

我在GAE数据存储区中存储了数千个实体,其中“创建”字段保存为日期String(标准格式)。

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

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

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

有没有办法调整GAE Query来实现这一目标?

2 个答案:

答案 0 :(得分:2)

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

您是否已将“已创建”字段编入索引?如果没有,GAE将忽略您在查询中提供的排序顺序。

答案 1 :(得分:0)

它不会那样工作。

您需要将该属性设为日期类型。

import java.util.Date;

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

也许您可以执行任务来更新所有实体,并将创建的字符串实际转换为日期并保存。