无法按特定月份检索数据

Posted

技术标签:

【中文标题】无法按特定月份检索数据【英文标题】: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 请检查 【参考方案1】:

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

【讨论】:

我试过 12 没有结果,而 '12' 有结果 当然。你介意告诉我你的日期字符串是什么格式吗?是 YYYY-MM-DD 吗? @GiapLee 感谢您的回答。我使用了您的代码,但即使是 1 月也会显示数据 嗨。您可以尝试使用我刚刚添加的新解决选项,因为我认为 strftime('%m', '15-12-2015') -> 在日期字符串中返回错误的月份编号位置

以上是关于无法按特定月份检索数据的主要内容,如果未能解决你的问题,请参考以下文章

检索特定月份的数据

如何按 MS Access 的特定月份汇总特定列数据并进入 vb.net 中的文本框

使用 start_end 和 end_date 检索特定月份的所有记录

如何在laravel中按特定月份获取用户订单数据?

使用 PHP,如何检索与创建的月份和年份匹配的项目

按特定顺序从 ResultSet 检索和显示值