如何在sqlite数据库中获取最接近的日期以显示日期

时间:2015-04-19 16:04:53

标签: android sqlite

我有一个SQLite数据库,其中包含一个包含完整日期列的表。我需要从该列中的所有内容中获取与当前日期最接近的日期,但我不知道如何为此构建查询。

例如,我在列

中有以下日期
3/15/2015
3/31/2015
4/15/2015
4/30/2015
5/15/2015
5/30/2015

如果当前日期是2015年4月20日,我需要它来获取具有日期的所有行。

修改

为了澄清,我只需要即将到来的日期,而不是过去的日期。

4/30/2015

我的日期也存储为字符串。有人可以帮忙吗?

最终查询由Loc Ha提供

Cursor trythis(String Date) {
    SQLiteDatabase db = this.getReadableDatabase();
    String[] params = new String[]{String.valueOf(Date)};
    Cursor cur = db.rawQuery("SELECT  " + colCompID + " as _id," + colCompClass + "," + colName + "," + colPayDue + "," + colDateDue + " FROM " + viewComps + " WHERE " + colDateDue + "=" + "( SELECT MIN (" + colDateDue + ") FROM " + PAYMENTS + " WHERE " + colDateDue + ">=?);", params);
    return cur;
}

1 个答案:

答案 0 :(得分:2)

测试一下:

SELECT t.* FROM table t
WHERE t.date_col = 
  ( SELECT MIN (t2.date_col) FROM table t2
    WHERE t2.date_col >= ? );

?参数将传递,其值为CURRENT date

如果在SQLite中date_col数据类型是Integer,?参数将以此值传递:System.currentTimeMillis()

注意:您可能需要从System.currentTimeMillis()

中删除时间信息,例如小时,分钟,秒,毫秒

注2:  如果在SQLite中使用String作为数据类型,则必须将System.currentTimeMillis()格式化为Date格式" yyyy / MM / dd"。如果您使用其他格式,例如M / d / yyyy - >您将有日期字符串比较问题。有关M / d / yyyy格式,请参阅下面的问题:

"5/15/2015".compareTo("11/30/2015") ---> Return 4 > 0
--> means "5/15/2015" > "11/30/2015" --- Wrong