按日期(字符串)为 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 将忽略您在查询中给出的排序顺序。
我在 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 将忽略您在查询中给出的排序顺序。