как сделать выбор из моей базы данных только по дате из длинного dateInMillis? - PullRequest
2 голосов

У меня есть этот метод в моем фрагменте

     @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);

    }
}

Мне нужно выбрать все задачи только с датой из длинной даты. Нужно ли форматировать мою дату? Есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 05 мая 2019

Нужно ли форматировать мою дату?

Нет , вы можете извлечь дату из столбцов и манипулировать/ управлять / манипулировать ими, используя

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')
;

первый запрос приводит к: -

enter image description here

Столбец shoplistadded представляет собой дату и время в миллисекундах (получено через System.currentTimeMillis())

Столбец convert_date представляет собой дату из столбца shoplistadded после удаления миллисекунд и извлечения даты (гггг-ММ-ДД) с помощью функции даты SQlite .То есть передаются первые 10 цифр (распознанный формат), поэтому возвращается только дата.

Второй запрос использует это для выбора только строк за апрель 2019 года, т.е. строка 2019-05-02 не возвращаетсяОстальные 3

...