2015-11-10 55 views
1

我正在開發基於SqlLiteDataBase的Android應用程序。 當我使用查詢方法查詢數據庫時,我想按升序排列日期列。 看來ORDERBY不起作用。SqlLiteDatabase.query按日期列順序不起作用

Cursor cursor = db.query("myTable", // The table to query 
      dbTools.tableColumns, // The columns to return 
      whereClause, // The columns for the WHERE clause 
      null, // The values for the WHERE clause 
      null, // don't group the rows 
      null, // don't filter by row groups 
      "dateText" + " ASC" // The sort order 
    ); 

調試期間光標mquery字段顯示以下內容:

SQLiteQuery: SELECT dateText, <some other columns here> FROM myTable WHERE dateText >= '2015-10-01 00:00:00' AND dateText <= '2015-10-31 23:59:59' ORDER BY dateText DESC 

(我刪除爲了您的方便無關列)

運行查詢後,我要檢查我是否有任何所以我打電話:

if (!cursor.moveToFirst()) 

然後我做了一些邏輯,每當我想移動到下一行上的光標我運行:

if (!cursor.moveToNext()) 

dateText列被定義爲DATETIME:

String query = "CREATE TABLE myTable (id INTEGER PRIMARY KEY AUTOINCREMENT, dateText DATETIME, <other columns here>)"; 

能否請指教爲什麼排序不工作?遍歷遊標上的行時,行不會被排序。 實施例: 如果我有第一,第二和第十2015年11月的行,由ASC排序將給此排序:10-> 1-> 2 通過DESC排序給出:2-> 10-> 1

+1

你是什麼意思'不工作'?有些錯誤?或數據沒有訂購? –

+0

我已經更新了這個問題。行未分類 – Omar

回答

0

我想升序

日期列,但你的代碼顯示訂購

ORDER BY dateText DESC 

改變它ASC是默認選項,這樣你就可以將其刪除

ORDER BY dateText ASC 
+0

感謝您的回覆,但ASC和DESC都不能正常工作... – Omar

1

這裏我建議你嘗試:

SQLiteQuery:SELECT dateText,FROM mytable的WHERE dateText> = '2015年10月1日00:00:00' AND dateText < =「2015-10 -31 23:59:59' ORDER BY日期(dateText)DESC

和Be-小心爲:
目的地==>後代
ASC ==>上升

祝你好運!

+0

謝謝。我需要用Java編寫,所以我會按照param的順序放置「date(dateText)ASC」。 「極限1」有重要嗎?我不想只得到一行... – Omar

+0

對不起,限制1它是錯誤的,!享受:) – Netero

+0

注意還有datetime()按日期和時間排序,是否解決了你的問題? – Netero

相關問題