【问题标题】:Data cannot be retrieved by given a specific month无法按特定月份检索数据
【发布时间】:2015-12-19 16:58:00
【问题描述】:

我想检索属于 12 月份的数据。

 public Cursor readData()
    {
        Cursor c=database.rawQuery(" SELECT _id, Date,Weather,Status, TimeIn_Info, TimeOut_Info FROM " + MyDatabaseHelper.TABLE_INFO +
                        " WHERE  strftime('%m',Date) = ? ",
                new String[]{12+""}, null);
        if (c != null) {
            c.moveToFirst();
        }
        return c;
    }

但是,不会显示任何数据。我确保它有一个 12 个月的数据。

MyDatabaseHelper for Table_Info

     public static final String TABLE_INFO="Information";
     public static final String Date="Date";
     public static final String Status="Status";
     public static final String TimeIn_Info="TimeIn_Info";
     public static final String TimeOut_Info="TimeOut_Info";
     public static final String Weather="Weather";
     public static final String Name="Name";

     public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table " + TABLE_INFO + " ( " + ID + " INTEGER PRIMARY KEY ,Name TEXT,Weather TEXT, Date DATETIME, Status Text, TimeIn_Info DATE TIME, TimeOut_Info DATETIME)");
      }

我使用date-time picker 选择日期,并且日期以19-12-2015 的格式保存日期。

我的数据库没有问题,因为数据显示出来了 当我将条件更改为名称时。

谁能帮我解决问题?

【问题讨论】:

  • 如果可能的话你能提供db文件吗
  • 我最好的猜测是因为列名 date 因为它也是一个关键字,您可能想要更改它并执行
  • @ZaidHoona 你想看 db 文件的屏幕截图吗?
  • 其实想要的ddl就是这样,即创建语句和你正在填写的一些例子的数据就是这样
  • @ZaidHoona 请检查

标签: android sqlite listview monthcalendar


【解决方案1】:

您可以尝试将插入日期时间更改为格式:2015-12-15 (%Y-%m-%d)

【讨论】:

  • 我试过 12 没有结果,而 '12' 有结果
  • 当然。你介意告诉我你的日期字符串是什么格式吗?是 YYYY-MM-DD 吗?
  • @GiapLee 感谢您的回答。我使用了您的代码,但即使是 1 月也会显示数据
  • 嗨。您可以尝试使用我刚刚添加的新解决选项,因为我认为 strftime('%m', '15-12-2015') -> 在日期字符串中返回错误的月份编号位置
猜你喜欢
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 2017-05-20
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
相关资源
最近更新 更多