如何从基于 sqlite 的日期约束中提取数据
Posted
技术标签:
【中文标题】如何从基于 sqlite 的日期约束中提取数据【英文标题】:how to extract data from sqlite based date constraint 【发布时间】:2013-11-19 05:04:07 【问题描述】:我正在做一个应用程序,其中包含一个使用 sq lite 的名为“Purchase”的表。具有三个字段 id、购买金额、日期的表。当我浏览谷歌时,我知道日期字段以整数或文本形式存储在 sq lite 中。所以我使用 var char 来存储文本。 现在我的问题是我想根据日期约束显示表中的详细信息 (例如:27-7-2012 到 10-8-2013 之间的数据)我如何提取数据,因为日期字段被声明为 var char.. 任何身体都可以帮助...
【问题讨论】:
您可以直接在 DBAdapter 类中使用查询。你想要这样的例子吗?我会把它作为答案发布。仅供参考,我已将日期声明为文本(例如 27/12/2013) 如果我使用直接查询也如何比较日期的月份,因为它是字符串如果我想显示最近 2 个月的数据我该如何编写查询你能举出任何小例子吗 是的。我会尽快发布 如果您想要在自定义 ListView 中显示记录的适配器和总样本,我也可以发布它。你想要我,还是你有它? 您的数据是如何存储的?是TEXT
,对,但是是哪种格式? d/m/y
?
【参考方案1】:
这是我在 DBAdapter 类中使用的一种方法:
public Cursor getAllDetailsField(String date)
return db.rawQuery("select * from " + TABLE_NAME_FIELDW + " where "
+ KEY_DATE + " = '" + date + "'", null);
这里 Date 作为参数传递,这意味着当我在 Activity 中使用此方法时,我必须为该方法分配一个 Date,以便它执行查询。上面的查询只是获取我在活动中传递的日期的记录。
活动中:
private void loadFieldDatabase()
String date = app.getDARDate();
// DATE is FETCHED FROM APPLICATION CLASS OBJECT, YOU CAN SET IT
// IN PREVIOUS OR CURRENT ACTIVITY , HOWEVER YOU MAY FETCH ANY WAY
// YOU WANT TO. JUST MAKE SURE WHATEVER YOU PASS, HOLDS THE DATE VALUE
String date = app.getDate();
Cursor c = db.getAllDetailsField(date);
if (c != null && c.getCount() > 0)
c.moveToFirst();
for (int count = 0; count < c.getCount(); count++)
DBbeanclass detail = new DBbeanclass();
detail.setDate(c.getString(c
.getColumnIndex(DARDBAdapter.KEY_DATE)));
detail.setName(c.getString(c
.getColumnIndex(DARDBAdapter.KEY_NAME)));
arrCustomerField.add(detail);
c.moveToNext();
c.close();
您会看到我没有为您编写查询。但我认为你可以自己做
【讨论】:
我还有 1 个疑问,我是 android 新手,所以如果这是一个愚蠢的问题,请向我道歉。我的问题是:此查询是否返回特定日期的数据...例如,如果我的日期为 25-7-2013,则查询将返回该日期的所有购买详细信息..?但我想从那天到现在 是的,它返回特定日期的数据。但是正如我在下面的答案中所写的那样,您应该尝试自己进行查询。在失败 3 天后,我解决了您遇到的相同问题。我什至没有得到 SO 的帮助。自己试试。我自己也试试。我也是一个初学者,为了记录。 Link 1 : ***.com/questions/10680793/… LINK 2: ***.com/questions/14681815/… 如果您在引用这些链接后仍然遇到问题,请告诉我。【参考方案2】:考虑使用 SQLite appropriate 日期格式。
使用YYYY-MM-DD
格式的日期将大大简化您的代码,允许更快地进入数据库(无需获取每一行来评估代码),并且还可以利用索引来利用性能。
转换现有数据也很容易。
【讨论】:
以上是关于如何从基于 sqlite 的日期约束中提取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQLite3 和 PostgreSQL 中的时间戳中选择日期
如何使用 sequelize 基于 sqlite3 中的“日期”列进行查询?