2011-04-01 74 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