首页 文章

使用日期过滤器从SQLite中选择一些数据?

提问于
浏览
0

我想使用按日期过滤器从数据库表中选择一些数据(日期列为:[searchDate] DATETIME DEFAULT CURRENT_TIMESTAMP,)

在这张图片中,我正在使用SQLite Expert和按日期过滤:
enter image description here

这段代码用于获取当前年份和月份:

DateFormat YEAR_FORMAT = new SimpleDateFormat("yyyy");
        DateFormat MONTH_FORMAT = new SimpleDateFormat("MM");
        YEAR_DATE = YEAR_FORMAT.format(new Date());
        MONTH_DATE = MONTH_FORMAT.format(new Date());
        Date date = new Date();
        Log.d("Month", YEAR_FORMAT.format(date) + " " + MONTH_FORMAT.format(date));

和我的应用程序中的游标查询获取按日期(当前年份)筛选的列表:

public List<Moment> MOMENT_YEAR(String year) {
        try {
            Moment MOMENT_TABLE;
            List<Moment> MOMENTS = new ArrayList<>();
            DB_HELPER.openDatabase();
            db.beginTransaction();
            Cursor MOMENT_CURSOR = db.rawQuery("SELECT * FROM tblMoment WHERE strftime('%Y', searchDate) =" + year, null);
            db.setTransactionSuccessful();
            MOMENT_CURSOR.moveToFirst();
            while (!MOMENT_CURSOR.isAfterLast()) {
                MOMENT_TABLE = new Moment(MOMENT_CURSOR.getInt(0), MOMENT_CURSOR.getString(1), MOMENT_CURSOR.getString(2), MOMENT_CURSOR.getString(3),
                        MOMENT_CURSOR.getString(4), MOMENT_CURSOR.getString(5), MOMENT_CURSOR.getInt(6), MOMENT_CURSOR.getInt(7) != 0);
                MOMENTS.add(MOMENT_TABLE);
                MOMENT_CURSOR.moveToNext();
            }
            MOMENT_CURSOR.close();
            return MOMENTS;
        } catch (Exception e) {
            return null;
        } finally {
            db.endTransaction();
            DB_HELPER.closeDatabase();
        }
    }

我试过了,但没有任何反应,列表为空(空) .
我今年的日期最多 .

2 回答

  • 1

    不清楚吗?在查询中使用SQL字符串分隔符( ' )包围 year 变量 .

    Cursor MOMENT_CURSOR = 
        db.rawQuery("SELECT * FROM tblMoment WHERE strftime('%Y', searchDate) = '" + year + "'", null);
    

    或者只是使用参数查询(Android将为您处理字符串分隔符) .

    Cursor MOMENT_CURSOR = 
        db.rawQuery("SELECT * FROM tblMoment WHERE strftime('%Y', searchDate) = ?", new String[]{year});
    
  • 0

    SELECT * FROM transactionList WHERE transactionDate BETWEEN'2018-04-29'AND'2018-05-29'LIMIT 20;

    尝试这个查询,它会像哇:)

    请检查问题

    Filter Not Working on date

相关问题