2013-04-10 117 views
2

如何查詢兩個日期時間列之間的行?如何查詢兩個日期時間列之間的行?

我的示例表:

message  |  startdatetime   |  enddatetime 
-------------------------------------------------------------------------------- 
Hi   | 2013-04-09 10:00:00  | 2013-04-09 10:30:00 

Good morning | 2013-04-09 10:40:00  | 2013-04-09 10:50:00 

我的查詢:

fromDateTime = 「2013年4月9日10:00:00」; toDateTime =「2013-04-09 10:50:00」;

c1 = myDB.rawQuery("select * from masterdatatable where number=? and startdatetime >= datetime(?) and enddatetime <= datetime(?) order by enddatetime, new String[]{imei,fromDateTime,toDateTime}); 

這裏如果通過fromDateTime="2013-04-09 10:00:00 " and toDateTime="2013-04-09 10:50:00 "這個查詢返回正確的兩個以上的記錄。

但是,如果我通過fromDateTime="2013-04-09 10:05:00 "; toDateTime="2013-04-09 10:20:00 ",此查詢返回空遊標。其實我希望這個查詢返回第一行。如何實現這一目標?

+0

是任何其他方式做到這一點? – Ramprasad 2013-04-10 09:34:52

+0

請參閱我的回答 – Ramprasad 2013-04-12 05:42:49

回答

1

我用下面的方法來實現這一點,

Cursor c0 = myDB.rawQuery("select startdatetime from masterdatatable where datetime(?) >= startdatetime and datetime(?) <= enddatetime order by startdatetime asc limit 1", new String[]{fromDateTime,fromDateTime}); 

String fromDate1=fromDateTime; 
if(c0.moveToFirst()) 
{ 
    fromDate1 = c0.getString(0); 
} 

Log.i("date", "fromDate1->"+fromDate1); 

Cursor c01 = myDB.rawQuery("select startdatetime from masterdatatable where datetime(?) >= startdatetime and datetime(?) <= enddatetime order by startdatetime desc limit 1", new String[]{toDateTime,toDateTime}); 
String fromDate2=toDateTime; 
if(c01.moveToFirst()) 
{ 
    fromDate2 = c01.getString(0); 
} 

Log.i("date", "fromDate2->"+fromDate2); 

c1 = myDB.rawQuery("select * from masterdatatable where startdatetime between datetime(?) and datetime(?) order by enddatetime, new String[]{fromDate1,fromDate2}); 
0

它不會返回的,因爲你的病情的第一行..第一行的結束時間不超過

toDateTime="2013-04-09 10:20:00 

2013-04-09 10:30:00 doesn't 

正因爲這樣你沒有得到第一行..

更新: 如果您仍然想要返回第一行,您可以創建一個新的查詢Ÿ 將檢查起始日期是給定的輸入之間..

0

嘗試使用下面的SQL查詢

select * from masterdatatable 
where number=? 
and fromdate between startdatetime and enddatetime 
and todate between startdatetime and enddatetime 
order by enddatetime 
+0

這還沒有現在的工作 – Ramprasad 2013-04-10 07:45:54

+0

試試這個編輯的代碼@Ram – Avi 2013-04-10 08:24:57

+0

@Avi它不會工作,因爲他的病情從 '10:05:00" 到'10:20:00' 外觀在他給的表格數據..沒有行回答這種情況! – Elior 2013-04-10 08:29:29

相關問題