Java Google应用程序引擎查询按日期筛选
GAE如何准确地按日期筛选查询结果 我正试图通过查询传递一个日期戳,但无法使其工作 在Google Dashboard数据存储查看器中,日期字段存储为gd:when类型,格式为:YYYY-MM-DD HH:MM:SS,但显示在网页上时显示为2013年7月15日20:15:35星期一UTC 我从jsp页面请求字符串Mon Jul 15 20:15:35 UTC 2013并对其进行解析,但过滤器不起作用Java Google应用程序引擎查询按日期筛选,java,google-app-engine,parsing,Java,Google App Engine,Parsing,GAE如何准确地按日期筛选查询结果 我正试图通过查询传递一个日期戳,但无法使其工作 在Google Dashboard数据存储查看器中,日期字段存储为gd:when类型,格式为:YYYY-MM-DD HH:MM:SS,但显示在网页上时显示为2013年7月15日20:15:35星期一UTC 我从jsp页面请求字符串Mon Jul 15 20:15:35 UTC 2013并对其进行解析,但过滤器不起作用 String strDatestamp = req.getParameter("stam
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);
计算机系统中的日期实际上是以时间表示的,特别是在内部以毫秒表示。请自行查看: 您看到的只是人类可读的表示,它缺少完整的毫秒精度 要查询特定的秒数,您需要在一秒钟内查询特定的时间范围。因此,您需要在2013年7月15日20:15:35 UTC星期一和2013年7月15日20:15:36 UTC星期一之间进行范围查询(注意第二个更改):
在当前版本中,它似乎不再起作用。
Filter startFilter = new FilterPredicate("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, startSecond);
Filter endFilter = new FilterPredicate("date", Query.FilterOperator.LESS_THAN, nextSecond);