我有旋转器,我们可以从中选择一个项目。还有两个按钮可以选择FROM日期和TO日期。显示数据基于从类别中选择的项目以及FROM日期和TO日期之间的项目。如何实现这一点。
以下查询是否正确
android sqlite中的SELECT * FROM TableName WHERE category = ? AND FromDate >= ? AND ToDate <= ?
。任何人都可以帮助我。
答案 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