【问题标题】:SqlLiteDatabase.query order by date column not workingSqlLiteDatabase.query 按日期列排序不起作用
【发布时间】:2015-11-10 20:45:10
【问题描述】:

我正在开发一个基于 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->2 按 DESC 排序得到:2->10->1

【问题讨论】:

  • 你是什么意思isnt working?一些错误?还是数据没有排序?
  • 我已经更新了这个问题。行未排序

标签: android sql sorting sql-order-by


【解决方案1】:

这是我建议你尝试的:

SQLiteQuery: SELECT dateText, FROM myTable WHERE dateText >= '2015-10-01 00:00:00' AND dateText

小心:
目的地 ==> 后代
ASC ==> 上升

祝你好运!!

【讨论】:

  • 谢谢。我需要用 Java 编写,所以我将按参数的顺序排列“date(dateText) ASC”。 “极限1”有重要性吗?我不想只得到一行...
  • 对不起,Limit 1 放错了,!享受:)
  • 注意还有 datetime() 用于按日期和时间排序,这解决了你的问题吗?
  • 非常感谢!在 dateText 周围添加 date() 似乎已经解决了这个问题。该查询似乎没有返回我感兴趣的所有条目,但我想这是一个完全不同的问题,我必须研究。
【解决方案2】:

我想按日期列升序排列

但是你的代码显示

ORDER BY dateText DESC

更改ASC是默认选项,所以你可以删除它

ORDER BY dateText ASC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多