【问题标题】:Query for getting rows with dates between certian range(stored as string in form of dd-mm-yyyy)查询获取特定范围内日期的行(以 dd-mm-yyyy 形式存储为字符串)
【发布时间】:2013-03-27 11:25:36
【问题描述】:

我在 sqllite 数据库中以 TEXT 的形式存储了日期。格式为“dd-mm-yyyy”。我正在查询以选择日期在两个给定日期之间的行。当我使用属于同一月份的查询日期查询数据库时,我得到了结果。但是,当日期范围属于不同月份时,它不会返回任何行。例如:

当日期类似于:29-03-2013 到 05-04-2013 时,就会出现问题。当日期介于 02-04-2013 和 05-04-2013 之间时,它会成功返回行。有行包含所有日期的条目。

以下是我尝试过的方法:

// MySQLiteHelper.COLUMN_DATE_DATE stores column name which is 'date'
// startdate and end date are string in form of mm-dd-yyyy
// MySQLiteHelper.TABLE_NAMES contain table name string
// MySQLiteHelper.COLUMN_MOOD_LEVEL is another column that I wish to get in return

我尝试使用 BETWEEN 子句和 =,但对输出没有影响。方法如下:

// Method 1:
String selection = MySQLiteHelper.COLUMN_DATE_DATE + " BETWEEN '"+startdate+"' AND '"+ enddate+"' "; 
// Method 2:
String selection = MySQLiteHelper.COLUMN_DATE_DATE + " >= '"+startdate+"' AND "+MySQLiteHelper.COLUMN_DATE_DATE+" <= '"+ enddate+"' ";

String []colum = {MySQLiteHelper.COLUMN_MOOD_LEVEL};
Cursor cursor = database.query(MySQLiteHelper.TABLE_NAMES, colum, selection, null, null, null, null);

当我使用时

cursor.getCount()

要查看返回的行数,它会给出 0。尽管在这些日期之间存在条目。

他们是我缺少的一些基本比较问题吗?我尝试查看以前的一些问题,但没有解决。我非常感谢您的帮助。

【问题讨论】:

    标签: android sqlite date


    【解决方案1】:

    要使字符串比较正常工作,您必须使用最重要字段在前的格式,即yyyy-mm-dd。 (这也是 SQLite 的 built-in date functions 唯一支持的格式。)

    【讨论】:

      【解决方案2】:

      在查询之前,我想强调一下正确的日期格式,即

      yyyy-MM-dd

      确保以这种格式保存您的日期。然后进一步查询如下:

       Cursor cursor = db.query(TABLE, null, COL_GAME_DATE + " BETWEEN ? AND ?", new String[]{
                              startDate, endDate},
                      null, null, null);
      

      【讨论】:

        【解决方案3】:

        我建议您先修复您的数据库。日期应该存储在 DATE 类型中,只是为了进一步使用的简单性。

        【讨论】:

        • 没错,没有专门的类型,但我(不准确)的意思是将日期放入知道如何处理它的列类型中,这意味着 TEXT 具有正确格式化的日期。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-19
        • 2015-08-09
        • 1970-01-01
        • 2012-10-15
        • 1970-01-01
        • 2015-05-11
        • 2014-02-11
        相关资源
        最近更新 更多