1

我以我的数据库格式“MM/dd/yyyy”存储日期,我想按特定日期进行查询,但是当我进行查询时,光标什么也不返回。

是因为字符串中的“/”还是其他原因?是的,我知道日期已正确存储在数据库中

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
        return new CursorLoader(getActivity(),Games.GAMES_URI,new String[] {Games.GAMES_ID},Games.GAMES_DATE + "="+dt,
                null,null);
}

转换日期

public convertDate(Calendar date){
        mDate = date;           
        Date d = new Date(date.getTimeInMillis());
        DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
        dt = df.format(d);
}
4

1 回答 1

1

您尝试执行的查询将如下所示:

... WHERE games_date=08/11/2012

它需要在哪里:

... WHERE games_date="08/11/2012"

(假设这games_date是列的名称——根据需要替换)

尝试Games.GAMES_DATE + "=?"你的第四个CursorLoader构造函数参数和{dt}你的第五个CursorLoader构造函数参数,Android/SQLite 会在需要的地方自动为你添加引号,假设你ContentProvider是由 SQLite 支持的。

此外,您可能会考虑以其他格式存储您的日期。如果您希望它是一个字符串,yyyy-MM-dd(or yyyy/MM/dd) 是一个更好的选择,因为它会按时间顺序正确排序。如果您不需要它是一个字符串,只需存储getTimeInMillis()在一个INTEGER列中就可以更容易地与Date对象进行转换,而不会弄乱字符串转换。

于 2012-08-11T21:18:22.997 回答