SQLite CursorLoader选择参数-日期格式列

时间:2019-02-13 20:47:35

标签: android sqlite android-cursorloader

在我的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:无法将给定对象格式化为日期

但是我找不到解决方案。我该如何解决?

1 个答案:

答案 0 :(得分:1)

为什么将格式应用于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) + "'";