2012-11-01 42 views
0

我想檢索兩個日期之間的數據在sqlite db.I已經嘗試使用BETWEEN子句,它工作正常,如果日期是相同的月份像'28 -10-2012'和'29 -10- 2012'在兩個日期之間獲取數據

但是,如果日期是像'30不同-10-2012' 和‘2012年1月11日’一個月它不是顯示數據

請幫助我。

+0

你如何存儲日期信息在數據庫中? – sandrstar

+0

我把它存儲爲DD/MM/YY格式 – Govind

+0

它可以工作,如果我將日期格式更改爲YY/MM/DD – Govind

回答

0

試試這個查詢。

return db.query(TABLE_NAME, new String[]{"temp_sp_date","temp_sp_amount"}, 
         "(temp_sp_date >= ? and temp_sp_date <= ?)" , new String[] {startDate,endDate}, " strftime(" + "\"%d" + "-" + "%m" + "-" + "%Y\"" + ",temp_sp_date) ",null , null); 

這裏temp_sp_date是列從我的桌子和的startDate結束日期是日期paramtere。

+1

由於性能方面的考慮,在某些情況下將時間存儲爲ms可能更好。 – sandrstar

2

它會在同一個月工作,因爲sql的defult概念在兩個日期之間獲取數據的工作只適用於日期格式類似YY/MM/DD .....在你的情況下你還需要使用其他屬性而不是僅使用日期條目...

1

我建議日期在SQLite中以毫秒爲單位寫入。

首先你讀的所有日期的ArrayList中寫日期,

Calendar cal=Calendar.getIntance(); 
cal.set(yyyy,mm,dd); 
dates.add(cal.getTimeInMillis()); 

其次,你可以比較兩個日期

long start_time; 
long end_time; 
Calendar cal=Calendar.getIntance(); 
start_time=cal.set(2012,9,30); 
end_time=cal.set(2012,10,1); 
for(int i=0,i<dates.size();i++) 
{ 
    if(dates.get(i)>start_time&&dates.get(i)<end_time) 
    {......`enter code here`} 
} 
0
cursor = sdb.query(TABLE_INFORMATION, Info_Date_Time_Array, DATE+" BETWEEN ? AND ?", new String[]{mindate,maxdate}, null, 
        null, null); 
相關問題