2012-08-04 265 views
0

在我的应用程序中,我必须从数据库中检索日期位于一些日期之间。在我的数据库中,我将日期存储为字符串。我也写了查询。日期比较

这是我的示例表:

id item price startdate enddate 
1  ass 78 04/08/2012 14/09/2012 
2  err 89 04/08/2012 10/09/2012. 
3  dffg 44 04/08/2012 18/08/2012 

我的查询是:

public Cursor getIncometitle(String grpsdb,String date) throws SQLException 
{ 
    Cursor mCursor = db.rawQuery(
      "SELECT * FROM incomexpense WHERE date like '"+date+"' OR enddate > date AND category='Income' AND groups='"+grpsdb +"' ORDER BY date DESC" , null); 
if (mCursor != null) { 
mCursor.moveToFirst(); 
} 
return mCursor; 
} 

在上述条件下我检查enddate>date。在这里即将到来的是,我认为它比较日期(04 and 14) and(04and 10),它是更大,所以所有的数据来临。但我不需要,如果enddate month is greater that startdate意味着我必须得到的数据。 在此先感谢...

+0

你能否再解释一下,我不明白哪个是问题?你想SQL只比较几个月吗? – luanjot 2012-08-04 07:58:12

+0

luanjoit ..我会清楚地解释我的情况。在我的上表开始日期和结束日期是那里..一些结束日期在下个月,一些在这个月。现在如果我要显示下个月的数据意味着我必须显示该项目结束日期在下个月。所以我检查条件,如果结束日期是gretaer比当前日期我必须检索该数据..我说我的问题是比较日期,并给出所有item.Because enddate(14,18,10)都来了,但我的查询应该返回(数据哪个月在下个月)(即)第1和第2应该来。 – 2012-08-04 08:08:18

+0

你可以检查此为sqlite http://sqlite.awardspace.info/syntax/sqlitepg08.htm – 2012-08-04 08:51:19

回答

0

撇开SQL注入攻击漏洞(使用参数化查询而不是将值直接插入到SQL中),应该以可排序的格式(例如, yyyy-MM-dd。在这一点上,一个字典顺序也会给你正确的时间顺序,所以你的比较将起作用。

如果可以,它实际上会更好,如果你可以存储您的日期如日期在数据库中 - 这取决于你的数据库是否支持。