Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
strftime函数不从android中的sql数据库检索任何记录_Android_Sql_Strftime - Fatal编程技术网

strftime函数不从android中的sql数据库检索任何记录

strftime函数不从android中的sql数据库检索任何记录,android,sql,strftime,Android,Sql,Strftime,我正在创建一个包含3个字段categoryText、amountInteger和dateDate的费用表 String CREATE_EXPENSE_TABLE = "CREATE TABLE " + Constants.EXPENSE_TABLE_NAME + "(" + Constants.ID_KEY + " INTEGER PRIMARY KEY," + Constants.EXPENSE_CATEGORY + " TEXT," +

我正在创建一个包含3个字段categoryText、amountInteger和dateDate的费用表

    String CREATE_EXPENSE_TABLE = "CREATE TABLE " + Constants.EXPENSE_TABLE_NAME + "("
            + Constants.ID_KEY + " INTEGER PRIMARY KEY," + Constants.EXPENSE_CATEGORY + " TEXT,"
            + Constants.EXPENSE_AMOUNT + " INTEGER," + Constants.EXPENSE_DATE + " DATE" +  ")";
    db.execSQL(CREATE_EXPENSE_TABLE);
我使用日期选择器从用户处获取日期,并将其保存到数据库中,如下所示:

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(Constants.EXPENSE_DATE, expense.getDate().getTimeInMillis());
我想检索特定月份的费用,为此我使用strf

Cursor cursor = db.rawQuery("select amount from Expense where strftime('%m', date) = '7'", null);
但是,没有返回任何记录

我用strf-year参数尝试了同样的方法

 Cursor cursor = db.rawQuery("select amount from Expense where strftime('%Y', date) = '2017'", null);
同样没有记录


我做错了什么。请指导我。

您需要将日期值存储为字符串格式。 以下是在数据库中存储日期的有效格式

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

您需要将日期值存储为字符串格式。 以下是在数据库中存储日期的有效格式

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

谢谢。我修改了表,将日期存储为String.SQLiteDatabase db=this.getWritableDatabase;ContentValues=新的ContentValues;SimpleDataFormat dateFormatter=新SimpleDataFormatyyyy MM dd,Locale.US;Calendar newDate=Calendar.getInstance;字符串dateOfExpense=dateFormatter.formatexpense.getDate.getTime;values.putConstants.EXPENSE\u日期、支出日期;现在我可以根据年份检索记录。但是,我没有根据月份获取任何记录。这是我的查询游标Cursor=db.rawQueryselect amount from Expense,其中strftime“%m”,date=“7”,null;月份查询有什么问题?游标游标=db.rawQueryselect amount from Expense,其中strftime“%m”,date=“7”,null;数据库中保存了8月份的记录更改为strftime“%m”,date='07',因为您存储的值格式为MM,所以值小于10,前缀为0。我修改了表,将日期存储为String.SQLiteDatabase db=this.getWritableDatabase;ContentValues=新的ContentValues;SimpleDataFormat dateFormatter=新SimpleDataFormatyyyy MM dd,Locale.US;Calendar newDate=Calendar.getInstance;字符串dateOfExpense=dateFormatter.formatexpense.getDate.getTime;values.putConstants.EXPENSE\u日期、支出日期;现在我可以根据年份检索记录。但是,我没有根据月份获取任何记录。这是我的查询游标Cursor=db.rawQueryselect amount from Expense,其中strftime“%m”,date=“7”,null;月份查询有什么问题?游标游标=db.rawQueryselect amount from Expense,其中strftime“%m”,date=“7”,null;数据库中保存了8月份的记录,请将其更改为以下格式:strftime“%m”,date=“07”,因为您存储的值格式为MM,因此值小于10,前缀为0