我有一个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;
}
答案 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