strftime函数不从android中的sql数据库检索任何记录
我正在创建一个包含3个字段categoryText、amountInteger和dateDate的费用表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," +
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