我正在开发一个基于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
答案 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