【问题标题】:How to display data between two dates based on android spinners selected item from sqlite db?如何根据从sqlite db中选择的android spinners显示两个日期之间的数据?
【发布时间】:2011-09-14 00:59:22
【问题描述】:

我有微调器,我们可以从中选择一个项目。并且还有两个按钮可以选择 FROM date 和 TO date。显示数据 基于从类别中选择的项目,介于 FROM 日期和 TO 日期之间。如何做到这一点。

以下查询是否正确 SELECT * FROM TableName WHERE category = ? AND FromDate >= ? AND ToDate <= ? 在 android sqlite 中。谁能帮帮我。

我的数据库架构

标识 |日期 |货币 |商户 |支付类型 |类别

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

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

【问题讨论】:

  • 向我们展示您的架构;向我们展示一些示例数据。

标签: android sqlite spinner


【解决方案1】:

好的,您的 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);

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

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

【讨论】:

  • 能否请您通过SQLiteDatabase查询方法提出上述查询。
  • 感谢您的回复。我纠正了它。你能看看我的问题“通过Android DialogBox插入数据后ListView没有更新吗?”在 StackOverFlow 中,您能给一些建议吗.. 等待您的回复.....
  • @Ria,也许你可以接受这个答案。接受答案可以激励人们花时间在你的问题上!
【解决方案2】:

首先,您应该阅读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。

【讨论】:

    【解决方案3】:

    试试这个

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

    【讨论】:

    • 这对吗 return sqLiteDatabase.rawQuery("SELECT * FROM " + MYDATABASE_TABLE + " WHERE Category = ? AND " + DATE + " BETWEEN " + firstDate + " AND " + secondDate, null);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2012-03-27
    • 1970-01-01
    • 2012-10-31
    • 2012-03-03
    • 2012-12-21
    • 1970-01-01
    相关资源
    最近更新 更多