【问题标题】:unable to get next 7 days data from SQLite无法从 SQLite 获取未来 7 天的数据
【发布时间】:2017-05-14 06:32:22
【问题描述】:

我正在创建提醒应用程序,并在 SQLite 中添加提醒详细信息。我将日期添加为dd/MM/yyyy HH:mm:ss 格式的字符串。但是当我试图获取接下来 7 天的数据时,我得到了以下异常。

FATAL EXCEPTION: main
 Process: com.sandy.remindcall, PID: 31982
android.database.sqlite.SQLiteException: near "11": syntax error (code 1): , while compiling: SELECT * FROM call_reminder WHERE reminder_date_time BETWEEN 21/05/2017 11:49:19 AND 14/05/2017 11:49:19
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)   

这是我的代码。

public Cursor getNextSevenDaysRecord(){
    Calendar theEnd = Calendar.getInstance();
    Calendar theStart = (Calendar) theEnd.clone();

    theStart.add(Calendar.DAY_OF_MONTH, +7);

    SimpleDateFormat dateFormat = new SimpleDateFormat(Constants.DD_MM_YYYY_HH_MM_SS);
    String start = dateFormat.format(theStart.getTime());
    String end = dateFormat.format(theEnd.getTime());

    // Now you have date boundaries in TEXT format
    Cursor cursor = mDb.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE "+KEY_DATE_TIME+" BETWEEN "+start+" AND "+end,null);

    return cursor;
}   

请给我任何参考

【问题讨论】:

  • 由于SQLite没有日期和时间数据类型,你是如何定义表中的列的?
  • KEY_DATE_TIME 只不过是字符串。我正在保存日期 ins 字符串格式 dd/MM/yyyy HH:mm:ss
  • 使用 SQLite - 日期和时间,否则您无法使用 between 进行类似查询。

标签: android sqlite date intervals


【解决方案1】:

该错误是由于没有在 SQL 语句中引用字符串值引起的。但即使在引用之后它也无法正常工作,因为这些值将作为字符串而不是日期进行比较,因此 14/05/2017 将在 19/05/2015 之前按词法顺序。

要解决此问题,可以将日期存储为数字,也可以使用前面的年份、月份、日期的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 2021-02-16
    • 2018-05-28
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多