GAE 究竟如何按日期过滤查询结果?
我正在尝试通过查询传递日期戳,但我无法让它工作。
在 Google Dashboard Datastore 查看器中,日期字段存储为 gd:when 类型,格式为:YYYY-MM-DD HH:MM:SS 但在网页上显示时显示为 Mon Jul 15 20:15:35协调世界时 2013 年。
我从 jsp 页面请求字符串 Mon Jul 15 20:15:35 UTC 2013 并对其进行解析,但过滤器无法正常工作。
String strDatestamp = req.getParameter("stamp");
String FormatString = "EEE MMM dd HH:mm:ss z yyyy";
Date datestamp = null;
try {
datestamp = new SimpleDateFormat(FormatString).parse(strDatestamp);
} catch (ParseException e) {
e.printStackTrace();
}
Filter filter = new FilterPredicate
("date", Query.FilterOperator.EQUAL, datestamp);
Query query = new Query("Example", key).setFilter(filter);
最佳答案
计算机系统中的日期实际上表示为时间,在特定情况下它在内部表示为 unix time以毫秒为单位。自己看看:date.getTime()
.
您看到的只是人类可读的表示,缺乏完整的毫秒精度。
要查询特定的秒数,您需要查询一秒内的特定时间范围。因此,您需要在 Mon Jul 15 20:15:35 UTC 2013
和 Mon Jul 15 20:15:36 UTC 2013
之间进行范围查询(注意第二个更改) :
Filter startFilter = new FilterPredicate("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, startSecond);
Filter endFilter = new FilterPredicate("date", Query.FilterOperator.LESS_THAN, nextSecond);
关于java - Google App Engine 查询过滤器按日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700709/