2011-04-01 105 views
3

我在查询CallLog.Calls内容提供者的详细呼叫。除了当我尝试按日期查询时,一切正常。也就是说,要获取特定日期或日期范围的通话详细信息等等,我知道日期存储为长(毫秒格式),所以我试着先将日期转换,然后通过它进行查询,但我必须在这里做一些错误。这里是我正在运行的查询,请注意,当我删除“WHERE DATE =”部分或将其替换为“WHERE TYPE =”之类的东西时,它运行良好。因此,如何运行查询以获取日期或日期范围?对此有何帮助?谢谢。CallLog.Calls按日期查询

Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, 
       CallLog.Calls.DATE + "<=?", 
       new String[] { String.valueOf(dateSTR)}, ORDER_BY); 
     startManagingCursor(c); 

回答

9

这是我要做的事:

Cursor c = contentResolver.query(CallLog.Calls.CONTENT_URI, 
       new String[] { CallLog.Calls.DATE, CallLog.Calls.DURATION, 
         CallLog.Calls.NUMBER, CallLog.Calls._ID }, 
       CallLog.Calls.DATE + ">?", 
       new String[] { String.valueOf(resetDate.getTime())}, 
       CallLog.Calls.NUMBER + " asc"); 

resetDate是一个日期变量,设置为我想覆盖周期的开始。

+0

我试过了,它似乎工作。但我有一个奇怪的概率,但如果我尝试按日期筛选,如CallLog.Calls.DATE +“> ?,它似乎工作,但如果我尝试它像CallLog.Calls.DATE +”= ?,它总是返回没有价值,也没有显示任何错误。可能是什么问题,我是否以错误的方式进行查询? – redGREENblue 2011-04-02 18:09:54

+0

当您查询CallLog.Calls.DATE +“=?”时你几乎总是会得到一个空的结果集,因为你检查的时间恰好是毫秒。尝试类似于CallLog.Calls.DATE +“>?和”+ CallLog.Calls.DATE +“<?”检查范围 – alibi 2011-04-03 20:29:41

+0

哦。现在一切都说得通了。我怎么没有发生过?谢谢您的帮助。 – redGREENblue 2011-04-03 22:27:03