如何根据sqlite db中的android spinners选择项显示两个日期之间的数据?

时间:2011-09-12 13:34:35

标签: android sqlite spinner

我有旋转器,我们可以从中选择一个项目。还有两个按钮可以选择FROM日期和TO日期。显示数据基于从类别中选择的项目以及FROM日期和TO日期之间的项目。如何实现这一点。

以下查询是否正确 android sqlite中的SELECT * FROM TableName WHERE category = ? AND FromDate >= ? AND ToDate <= ?。任何人都可以帮助我。

我的Db架构

id |日期|货币|商人| payType |类

1 | 2011-9-9 |美元|更多|借记|个人

2 | 2011-9-12 |欧元|本田|现金|商业

3 个答案:

答案 0 :(得分:5)

好的,您的YYYY-MM-DD日期格式看起来不错;确保TO和FROM日期以相同的方式格式化为字符串。查询:

SELECT * FROM TableName where category = ? and dates >= ? and dates <= ?;

或正如Pratik建议的那样

SELECT * FROM TableName where category = ? and dates between ? and ?;

根据要求,这是一个可能的SQLiteDatabase查询语句:

Cursor cursor = db.query("TableName", null,
                         "category = ? and dates between ? and ?", 
                          new String[] {"personal", "2011-09-07", "2011-09-10"},
                          null, null, null);

当然,您可以使用微调器和FROM和TO日期中的值替换selectionArgs字符串。

我刚注意到,您所显示的表中的日期在月和日字段中没有前导零;您需要这些才能使比较正常工作,因为您实际上是在比较文本字符串。注意:"2011-09-10" < "2011-9-9""2011-09-10" > "2011-09-09"

答案 1 :(得分:1)

首先,您应该阅读SQL as Understood by SQLite: Date And Time Functions,以便了解SQLite如何处理查询中的日期和时间。幸运的是,查看您的数据表明您使用的是正确的时间格式

因此,考虑到这一点,您的示例查询将成为

SELECT * FROM TableName WHERE category = ?
 AND FromDate >= date(?) AND ToDate <= date(?)

然而,查看您的架构以及您对某些答案的回答,您可能希望执行以下操作:

  myDB.query(myTable,null,"category = ? AND dates BETWEEN date(?) AND date(?)",
       new String[]{selectedCategory, startDate, endDate}, null);

不要忘记修剪任何空格的startDate和endDate。

答案 2 :(得分:0)

试试这个

SELECT * FROM TableName WHERE category = ? AND datecolum between FromDate AND ToDate