SQLite CursorLoader 选择参数 - 日期格式列
SQLite CursorLoader selection parameter - date format the column
在我的 android 应用程序中,我有一个数据库将日期存储为来自 System.currentTimeInMilis 的长值。我现在想使用 CursorLoader 查询特定日期。这是我试过的:
DateFormat sameDayCheckerformatter = new SimpleDateFormat("dd-MM-yyyy");
String selection = sameDayCheckerformatter.format(ItemEntry.COLUMN_DAY) + "=" + sameDayCheckerformatter.format(dayInMilis);
return new CursorLoader(getActivity(),
ItemContract.ItemEntry.CONTENT_URI_ITEMS,
projection,
selection,
null,
null);
这没有像我预期的那样工作:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
但是我找不到解决办法。我该如何解决?
为什么要将格式应用于 ItemEntry.COLUMN_DAY
?
它看起来像一个 String
代表一个列名。
您还需要用引号将格式化日期括起来。
更改为:
String selection = ItemEntry.COLUMN_DAY + " = '" + sameDayCheckerformatter.format(dayInMilis) + "'";
编辑:
如果 ItemEntry.COLUMN_DAY
列具有整数值,则根本不需要格式化:
String selection = ItemEntry.COLUMN_DAY + " = " + dayInMilis;
编辑 2:您需要 strftime()
功能:
String selection =
"strftime('%d-%m-%Y', " + ItemEntry.COLUMN_DAY + " / 1000, 'unixepoch') = '" +
sameDayCheckerformatter.format(dayInMilis) + "'";
在我的 android 应用程序中,我有一个数据库将日期存储为来自 System.currentTimeInMilis 的长值。我现在想使用 CursorLoader 查询特定日期。这是我试过的:
DateFormat sameDayCheckerformatter = new SimpleDateFormat("dd-MM-yyyy");
String selection = sameDayCheckerformatter.format(ItemEntry.COLUMN_DAY) + "=" + sameDayCheckerformatter.format(dayInMilis);
return new CursorLoader(getActivity(),
ItemContract.ItemEntry.CONTENT_URI_ITEMS,
projection,
selection,
null,
null);
这没有像我预期的那样工作:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
但是我找不到解决办法。我该如何解决?
为什么要将格式应用于 ItemEntry.COLUMN_DAY
?
它看起来像一个 String
代表一个列名。
您还需要用引号将格式化日期括起来。
更改为:
String selection = ItemEntry.COLUMN_DAY + " = '" + sameDayCheckerformatter.format(dayInMilis) + "'";
编辑:
如果 ItemEntry.COLUMN_DAY
列具有整数值,则根本不需要格式化:
String selection = ItemEntry.COLUMN_DAY + " = " + dayInMilis;
编辑 2:您需要 strftime()
功能:
String selection =
"strftime('%d-%m-%Y', " + ItemEntry.COLUMN_DAY + " / 1000, 'unixepoch') = '" +
sameDayCheckerformatter.format(dayInMilis) + "'";