我以数据库格式“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);
}
答案 0 :(得分: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
(或yyyy/MM/dd
)是一个更好的选择,因为它将按时间顺序正确排序。如果您不需要将其作为字符串,只需将getTimeInMillis()
存储在INTEGER
列中,就可以更轻松地转换为Date
个对象,而不会干扰字符串转换。