如何仅按日期从 long dateInMillis 中从我的数据库中进行选择?
how to make selection from my database only by date from long dateInMillis?
我的片段中有这个方法
@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);
}
}
我需要 select 所有只有长日期的任务。我需要格式化我的日期吗?有什么简单的方法可以做到吗?
Do i need to format my date?
否,您可以使用
从列中提取日期并 manipulate/manage/manipulate 它们
date(substr(the_column,1,10),'unixepoch')
例如考虑以下内容(示例chosen/selected因为真实数据可用):-
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 列是 shoplistadded 列中删除毫秒并提取日期 (yyyy- MM-DD) 通过使用 SQlite date function。也就是说,它传递了前 10 位数字(一种可识别的格式),因此 returns 只是日期。
第二个查询使用此查询仅 select 2019 年 4 月的行,即不返回 2019-05-02 行,其他 3 行。
我的片段中有这个方法
@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);
}
}
我需要 select 所有只有长日期的任务。我需要格式化我的日期吗?有什么简单的方法可以做到吗?
Do i need to format my date?
否,您可以使用
从列中提取日期并 manipulate/manage/manipulate 它们date(substr(the_column,1,10),'unixepoch')
例如考虑以下内容(示例chosen/selected因为真实数据可用):-
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 列是 shoplistadded 列中删除毫秒并提取日期 (yyyy- MM-DD) 通过使用 SQlite date function。也就是说,它传递了前 10 位数字(一种可识别的格式),因此 returns 只是日期。
第二个查询使用此查询仅 select 2019 年 4 月的行,即不返回 2019-05-02 行,其他 3 行。