为什么SQLite不能选择今天的日和月?

问题描述 投票:0回答:1

我的数据库结构如下

db.execSQL("create table " + TABLE_NAME + " (id integer primary key autoincrement,fname text default null, bday text)");

数据表

enter image description here

试图选择有 "今日 "和 "本月 "的记录,但总是返回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;
}

请帮我解决这个问题。

android database sqlite android-sqlite
1个回答
0
投票

你的查询不能工作的唯一方法是如果日期没有格式化,那么你的查询就会失败。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
);

没有理由分别检查月和日。

© www.soinside.com 2019 - 2024. All rights reserved.