2010-08-29 44 views
0

你好我正在使用谷歌应用程序引擎并使用它的数据库我试图检索数据并进行查询,只搜索我想要的日期或时间。所以如果我想要9月9日的所有输入日期,那么它会给我所有9月份日期的列表。Java查询日期不正常?

PersistenceManager pm = PMF.get().getPersistenceManager(); 
    List rules = null; 
    try { 
     String query = "SELECT FROM "+ 
        TestRule.class.getName()+ 
        " where"+ 
        " days > 31"; 
     System.out.println("query = "+query); 
     Query q = pm.newQuery(query); 
     q.setFilter("curDate < endDate"); 

     q.declareParameters("long curDate"); 
     Date curDate = new Date(); 

    rules = (List) q.execute(curDate.getTime()); 

     resp.setContentType("text/html; charset=UTF-8"); 
     PrintWriter out = resp.getWriter(); 
     if(rules != null) { 
      out.print("<p> Query result size = "+rules.size()+"</p>");      
     } else { 
      out.print("<p> Query returned null </p>");      
     } 


} finally { 
     pm.close(); 

} 
} 

测试规则类有数据库的数据 并具有getter和setter。有谁知道如何做到这一点,如果有其他方式 比这将是伟大的。谢谢大家

回答

1

还有另一种更紧凑的方式来做到这一点: 您是否确定days > 31过滤器?

PersistenceManager pm = PMF.get().getPersistenceManager(); 
    List rules = null; 
    try { 

     Query query = new Query(TestRule.class, "curDate < endDate && days > 30");  
     q.declareParameters("long curDate"); 
     rules = (List) q.execute(new Date().getTime()); 

     return rules; 
}finally { 
    pm.close(); 
}