2012-08-04 316 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。在這一點上,一個字典順序也會給你正確的時間順序,所以你的比較將起作用。

如果可以,它實際上會更好,如果你可以存儲您的日期如日期在數據庫中 - 這取決於你的數據庫是否支持。