2013-04-10 93 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

相关问题