我的数据库结构如下
db.execSQL("create table " + TABLE_NAME + " (id integer primary key autoincrement,fname text default null, bday text)");
数据表
试图选择有 "今日 "和 "本月 "的记录,但总是返回0。但总是返回0,是什么问题?
public Cursor selectTodaysBday() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("select fname from " + TABLE_NAME + " where strftime('%m',bday) = strftime('%m',date('now')) and strftime('%d',bday) = strftime('%d',date('now'))", null);
Log.i("app", "todays count: " + cursor.getCount()); //always returning 0, i have 5 records of todays day and month
return cursor;
}
请帮我解决这个问题。
你的查询不能工作的唯一方法是如果日期没有格式化,那么你的查询就会失败。YYYY-MM-DD
是SQLite唯一有效的日期格式。如果是这种情况,那么 strftime()
返回 null
而你没有从查询中得到任何记录。 将日期的格式改为 YYYY-MM-DD
并且你也可以将查询简化为这样。
Cursor cursor = db.rawQuery(
"select fname from " + TABLE_NAME + " where strftime('%m-%d',bday) = strftime('%m-%d',date('now'))",
null
);
没有理由分别检查月和日。