我在本地数据库表“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
答案 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);