【问题标题】:Select some data from SQLite using a date filter?使用日期过滤器从 SQLite 中选择一些数据?
【发布时间】:2018-01-28 12:35:03
【问题描述】:

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

在这张图片中,我使用 SQLite Expert 和按日期过滤:

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

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();
        }
    }

我试过了,但没有任何反应,并且列表为空(空)。
我有今年的大多数日期。

【问题讨论】:

    标签: android sqlite datetime android-sqlite


    【解决方案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});
    

    【讨论】:

      【解决方案2】:

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

      试试这个查询,它会像哇 :) 一样工作

      请检查问题

      Filter Not Working on date

      【讨论】:

        猜你喜欢
        • 2013-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-05
        • 1970-01-01
        • 2014-02-19
        • 1970-01-01
        相关资源
        最近更新 更多