Android Sqlite在两个日期范围之间选择查询

时间:2019-06-10 10:01:06

标签: android sqlite

我在选择语句中遇到问题。 我需要查询特定开始日期和结束日期之间的所有行。 在这里,我只得到1行作为结果。 我需要选择6月1日至6月3日之间的行(包括它)。 我已经尝试使用logdate和intime [timestamp]与'BETWEEN'。但仍然没有解决。

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 个答案:

答案 0 :(得分:1)

您的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'

请参见demo
结果:

| _id | logdate     | intime        | outtime       | lastmodified  | breaktime | timesheet |
| --- | ----------- | ------------- | ------------- | ------------- | --------- | --------- |
| 3   | 01-Jun-2019 | 1559908893111 | 1559919690015 | 1559908893111 |           |           |
| 4   | 02-Jun-2019 | 1559434140000 | 1559479500000 | 1559909367627 |           |           |