按查询分组在android 2.1中不起作用

时间:2011-09-15 12:03:16

标签: android sqlite group-by

我在本地数据库表“session”中以毫秒为单位保存日期时间 我的问题是这个代码是在Android 2.2及以上版本但是Android 2.2的爱情版本 它没有工作意味着它给了我表中的所有行 但是我在Android 2.2中运行相同的代码,它正在工作并给我不同的值

当我在Sqlite Manager中运行以下查询时,它给了我正确的不同值

创建表格语法

"CREATE TABLE  session  ( " +
        "recid  INTEGER PRIMARY KEY NOT NULL ,  " +
        "starttime  TEXT)";

查询从数据库中获取数据

Cursor c = mDb.rawQuery("select distinct (starttime / (24 * 60 * 60 * 1000)) ,
starttime from session group by (starttime / (24 * 60 * 60 * 1000))", null);

数据库表会话中的值::

1   1319084700198
4   1319084100642
5   1319092500940
6   1319092500769
7   1319100300864
8   1319107500002
9   1319107500673
10  1319168700236
11  1319169000223
12  1319178000717
13  1319178000902
14  1319185800738
15  1319192100137
16  1319256000842
17  1319256000985
18  1319192100156
19  1319084700210
20  1319085000660
21  1319086500972
22  1319088000927
23  1319092500687
24  1319092500027
25  1319092500178
26  1319092500702
27  1319092500878
28  1319092500114

2 个答案:

答案 0 :(得分:1)

我认为问题的根本在于在SQL中混合使用字符串和算术。 考虑将数据库类型从TEXT更改为INTEGER。

答案 1 :(得分:0)

如果由于某种原因必须使用文本,我会尝试计算SQL之外的值并提供计算值。这样你就可以捕获NumberFormatException等。

distinctTime = Double.parseDouble(starttime) / (24 * 60 * 60 * 1000);
Cursor c = mDb.rawQuery("select distinct " + distinctTime, 
"starttime from session group by " +distinctTime, null);