2017-04-27 16 views
0

我在網上搜索了很多這方面的知識,但是還沒有找到解決方案。如何從Sqlite中獲取記錄通過比較兩個日期

基本上我想填充從我的sqlite數據庫到我的自定義android listview兩個日期之間的記錄。

我知道SQLite沒有專用的DATETIME類型。通常人們所做的是確保他們將日期存儲爲一致的格式化字符串;例如,YYYY-MM-DD hh:mm:ss。如果你這樣做,只要你是一致的,那麼你可以直接比較日期。

但是,我的查詢返回不正確的記錄。

這些都是我想查詢:

public Cursor getBhattiNamesByDate(String fromDate, String todate, SQLiteDatabase sqLiteDatabase) { 

    /*String query = " SELECT * FROM "+ AddBhattiContract.AddBhattiItems.TABLE_NAME+" WHERE " 
      +AddBhattiContract.AddBhattiItems.COL_1+" BETWEEN '"+fromDate+"' AND '"+todate+"'";*/ 

    String query = " SELECT * FROM "+ AddBhattiContract.AddBhattiItems.TABLE_NAME+" WHERE " 
      +AddBhattiContract.AddBhattiItems.COL_1+" >= Datetime('"+fromDate+"') AND " 
      +AddBhattiContract.AddBhattiItems.COL_1+" <= Datetime('"+todate+"')"; 

    /* String query = " SELECT * FROM "+ AddBhattiContract.AddBhattiItems.TABLE_NAME+" WHERE " 
      +AddBhattiContract.AddBhattiItems.COL_1+" >= '"+fromDate+"' AND " 
      +AddBhattiContract.AddBhattiItems.COL_1+" <= '"+todate+"'";*/ 

    cursor = sqLiteDatabase.rawQuery(query, null); 
    Log.e("TagWastageCursor","true"); 
    return cursor; 
} 
+0

請提供一些示例數據和您希望的輸出。 (請參閱[如何 格式化堆棧溢出中的SQL表 後?](https://meta.stackexchange.com/q/96125)如何添加一些內容。) –

回答

0

實現這一目標的最佳途徑就是拯救敢爲時間戳(字符串),然後當你查詢,只解析那些時間戳長,然後你可以比較。 時間戳是1970年1月1日以來的秒數。

+0

您有沒有我可以參考的任何示例? ? –

+0

它是秒還是毫秒的計數?我也建議使用'INTEGER'而不是文本,因此在查詢時不需要解析 – Yazan

+0

它是SECONDS的數量,並且最好將時間戳保存爲一個字符串,因爲您需要把它解析爲一個Long。 Long可以比INTEGER保存更多的值,所以如果你這樣做,你可能會遇到一個錯誤。 –