2013-07-17 47 views
2

GAE按日期過濾查詢結果的確切程度?Google App Engine按日期查詢過濾器

我想通過查詢傳遞一個datestamp,但我無法讓它工作。

在Google Dashboard Datastore查看器中,日期字段存儲爲gd:當輸入格式爲:YYYY-MM-DD HH:MM:SS但在網頁上顯示時顯示爲星期一7月15日20:15: 35 UTC 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); 

回答

1

日期在計算機系統中實際被表示爲時間,特別情況下,在內部表示爲毫秒unix time。請親自看看:date.getTime()

你看到的只是人類可讀的表示,它缺少完整的毫秒精度。

要查詢特定秒鐘,您需要在一秒鐘內查詢特定時間範圍。所以,你需要做的Mon Jul 15 20:15:35 UTC 2013Mon 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); 
+0

似乎並不在當前版本中不再起作用。 – ppaulojr