Java Google应用程序引擎查询按日期筛选

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

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("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);