Согласно вашему комментарию Чт 9 января 2020 г. 00:00:00 (1578524400000) до пт 10 января 2020 г. 00: 00: 00
Тогда вы не ожидаете получить ID 5 так как пт 10 января 2020 23:16:42 это та же дата НО позднее .
Так что если вы хотите получить все строки от даты к дате, игнорируя время, тогда вы может использовать то, что равно: -
SELECT COLUMN_ID,COLUMN_DATE,COLUMN_STATUS,COLUMN_TOTAL FROM thetable WHERE date(COLUMN_DATE / 1000,'unixepoch') BETWEEN date(1578530800000 / 1000,'unixepoch') AND date(1578697200000 / 1000,'unixepoch');
SO
String selection = "date(" +Wdatabase.COLUMN_DATE + "/ 1000,'unixepoch') BETWEEN date(" + startDate + "/1000,'unixepoch') AND "date(" + endDate + "/1000,'unixepoch')";
ИЛИ (как было бы рекомендовано)
String selection = "date(" +Wdatabase.COLUMN_DATE + "/ 1000,'unixepoch') BETWEEN date(?/1000,'unixepoch') AND date(?/1000,'unixepoch')";
Cursor r = Objects.requireNonNull(getActivity()).getContentResolver().query(DbProvider.CONTENT_URI, projection, selection, new String[]{String.valueOf(startDate),String.valueOf(endDate)}, null, null);
- Таким образом, параметры связаны (т. е. каждое? в предложении WHERE безопасно заменяется значениями по принципу 1 на 1)
- ВНИМАНИЕ! Использование BEWTEEN это немного упрощает запрос, поскольку ему нужен только столбец указывается один раз.
- , если вы хотите, чтобы вместо минуты использовалась дата, а не дата (3 события). В основном / 1000 отбрасывает миллисекунды.
- Обратите внимание, что вышеприведенный код является принципиальным и не был запущен или протестирован и поэтому может содержать некоторые ошибки. Сказать, что оригинал SQL был протестирован с использованием
: -
DROP TABLE IF EXISTS thetable;
create table thetable (COLUMN_ID integer primary key autoincrement, COLUMN_DATE integer not null, COLUMN_STATUS text not null, COLUMN_TOTAL text not null);
INSERT INTO thetable (COLUMN_DATE,COLUMN_STATUS,COLUMN_TOTAL) VALUES
(1578524400000,'enter',0),
(1578530800000,'exit',1),
(1578611801022,'enter',2),
(1578697200000,'enter',3),
(1578698202000,'exit',1),
(1578783710000,'enter',2);
SELECT COLUMN_ID,COLUMN_DATE,COLUMN_STATUS,COLUMN_TOTAL, datetime(COLUMN_DATE / 1000,'unixepoch') FROM thetable WHERE date(COLUMN_DATE / 1000,'unixepoch') BETWEEN date(1578530800000 / 1000,'unixepoch') AND date(1578697200000 / 1000,'unixepoch');
DROP TABLE IF EXISTS thetable;
Что приводит к: -
COLUMN_ID COLUMN_DATE COLUMN_STATUS COLUMN_TOTAL datetime(COLUMN_DATE / 1000,'unixepoch')
2 1578530800000 exit 1 2020-01-09 00:46:40
3 1578611801022 enter 2 2020-01-09 23:16:41
4 1578697200000 enter 3 2020-01-10 23:00:00
5 1578698202000 exit 1 2020-01-10 23:16:42