Sqlite仅与当前日期进行比较

时间:2018-05-02 01:10:58

标签: android sqlite

我以yyyy-MM-dd格式存储日期。我将其与当前日期进行比较。查询是这样的:

public Cursor getData() {
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();        
    String queryGetData = "SELECT * FROM " + TABLE_NAME 
              + " WHERE " + SEARCH_DATE + " >=  date('now') LIMIT 5";
    Cursor result = sqLiteDatabase.rawQuery(queryGetData, null);
    return  result;
}

问题在于,如果查询是在较早时间(但仍在同一天)创建的,则查询不会返回任何结果。我再次只保存数据库中的日期部分而不是时间。

导致此行为的原因是什么?

2 个答案:

答案 0 :(得分:0)

我的猜测是你实际上并没有将数据存储为yyyy-MM-dd,而是以包含时间的其他格式存储,否则时间不会是一个因素。

您可以尝试: -

    String queryGetData = "SELECT * FROM " + TABLE_NAME + " WHERE date(" + SEARCH_DATE + ") >= date('now') LIMIT 5";

答案 1 :(得分:0)

如果您的日期时间格式没有错误,您可以检查并将 localtime 参数添加到日期()函数

String queryGetData = "SELECT * FROM " + TABLE_NAME 
              + " WHERE " + SEARCH_DATE + " >=  date('now', 'localtime') LIMIT 5";

<强>注意

  • 使用日期功能时,请注意日期()
  • 中的本地时间参数