SqlLiteDatabase.query按日期排序列不起作用

时间:2015-11-10 20:45:11

标签: android sql sorting sql-order-by

我正在开发一个基于SqlLiteDataBase的Android应用程序。 当我使用查询方法查询数据库时,我想按日期列按升序排序。 似乎ORDERBY无效。

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月1日,2日和10日的行,ASC的排序将给出这种排序:10-> 1&gt; 2 通过DESC排序得到:2-> 10-> 1

2 个答案:

答案 0 :(得分:1)

这里我建议您尝试:

SQLiteQuery:SELECT dateText,FROM myTable WHERE dateText&gt; =&#39; 2015-10-01 00:00:00&#39; AND dateText&lt; =&#39; 2015-10-31 23:59:59&#39; ORDER BY date(dateText)DESC

并且要小心:
目的地==&gt;后代
ASC ==&gt;方兴未艾

祝你好运!!

答案 1 :(得分:0)

  

我想按日期列升序排序

但你的代码显示

ORDER BY dateText DESC

更改ASC是默认选项,因此您可以将其删除

ORDER BY dateText ASC