我的片段中有这个方法
@Override
public void findTasksByDate(long date) {
adapter.removeAllItems();
List<ModelTask> tasks = new ArrayList<>();
tasks.addAll(activity.dbHelper.query().getTasks(DBHelper.SELECTION_LIKE_DATE + " AND "
+ DBHelper.SELECTION_STATUS + " OR " + DBHelper.SELECTION_STATUS,
new String[]{"%"+ date + "%", Integer.toString(ModelTask.STATUS_CURRENT),
Integer.toString(ModelTask.STATUS_OVERDUE)}, DBHelper.TASK_DATE_COLUMN));
for (int i = 0; i < tasks.size(); i++) {
Log.d("data", "Title = " + tasks.get(i).getTitle());
addTask(tasks.get(i), false);
}
}
我需要从长日期中选择仅包含日期的所有任务。我需要格式化我的日期吗?有什么简单的方法可以实现吗?
Do i need to format my date?
否,您可以从列中提取日期并使用
操作/管理/操作它们
date(substr(the_column,1,10),'unixepoch')
例如,考虑以下内容(选择/选择实际数据可用的示例):-
SELECT
_id,
shoplistdateadded,
date(substr(shoplistdateadded,1,10),'unixepoch') AS converted_date
FROM shoplist;
SELECT
_id,
shoplistdateadded,
date(substr(shoplistdateadded,1,10),'unixepoch') AS converted_date
FROM "shoplist"
WHERE date(substr(shoplistdateadded,1,10),'unixepoch')
BETWEEN date('2019-04-01')
AND date('2019-04-30')
;
第一个查询结果为:-
shoplistadded 列是以毫秒为单位的日期时间(通过 System.currentTimeMillis()
获取)
converted_date 列是使用 SQlite date function 删除毫秒并提取日期 (yyyy-MM-DD) 后的 shoplistadded 列中的日期。 。也就是说,它会传递前 10 位数字(一种可识别的格式),因此仅返回日期。
第二个查询使用它仅选择 2019 年 4 月的行,即不返回 2019-05-02 行,其他 3 行返回。
我是一名优秀的程序员,十分优秀!