Android Sqlite выберите запрос между двумя диапазонами дат - PullRequest
0 голосов
/ 10 июня 2019

Я столкнулся с проблемой в утверждении select.Мне нужно запросить все строки между определенной датой начала и даты окончания.Здесь я получаю только 1 строку в результате.Мне нужно выбрать строки между 1 июня и 3 июня, включая его.Я пытался с logdate и intime [timestamp] с «МЕЖДУ».но все еще не решено.

enter image description here

select * from tablename where intime BETWEEN 1559327495307  AND  1559586580693  ORDER BY intime DESC;

Позвольте мне поделиться данными моей таблицы:

BEGIN TRANSACTION;
CREATE TABLE testdb (_id integer primary key autoincrement, logdate text ,intime text,outtime text ,lastmodified text,breaktime text,timesheet text);
INSERT INTO `testdb` (_id,logdate,intime,outtime,lastmodified,breaktime,timesheet) VALUES (1,'07-Jun-2019','1559878500000','1559909160000','1559909291040',NULL,NULL);
INSERT INTO `testdb` (_id,logdate,intime,outtime,lastmodified,breaktime,timesheet) VALUES (2,'06-Jun-2019','1559792880000','1559825400000','1559902319314',NULL,NULL);
INSERT INTO `testdb` (_id,logdate,intime,outtime,lastmodified,breaktime,timesheet) VALUES (3,'01-Jun-2019','1559908893111','1559919690015','1559908893111',NULL,NULL);
INSERT INTO `testdb` (_id,logdate,intime,outtime,lastmodified,breaktime,timesheet) VALUES (4,'02-Jun-2019','1559434140000','1559479500000','1559909367627',NULL,NULL);
COMMIT;

1 Ответ

1 голос
/ 10 июня 2019

Ваш столбец logdate содержит даты в несопоставимом формате.SQLite не настолько гибок в таких случаях, поэтому вам нужно переформатировать даты в 'yyyy-mm-dd', а это нелегко, поскольку ваш текущий формат - 'dd-MMM-yyyy':

select * from testdb 
where 
  substr(logdate, 8, 4) || '-' ||
  case substr(logdate, 4, 3)
    when 'Jan' then '01'
    when 'Feb' then '02'
    when 'Mar' then '03'
    when 'Apr' then '04'
    when 'May' then '05'
    when 'Jun' then '06'
    when 'Jul' then '07'
    when 'Aug' then '08'
    when 'Sep' then '09'
    when 'Oct' then '10'
    when 'Nov' then '11'
    when 'Dec' then '12'
  end || '-' ||
  substr(logdate, 1, 2) between '2019-06-01' and '2019-06-03'

См. Демоверсию .Результаты:

| _id | logdate     | intime        | outtime       | lastmodified  | breaktime | timesheet |
| --- | ----------- | ------------- | ------------- | ------------- | --------- | --------- |
| 3   | 01-Jun-2019 | 1559908893111 | 1559919690015 | 1559908893111 |           |           |
| 4   | 02-Jun-2019 | 1559434140000 | 1559479500000 | 1559909367627 |           |           |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...