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-04-09 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 ",此查询将返回空游标。其实我希望这个查询返回第一行。如何做到这一点?

4

3 回答 3

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});
于 2013-04-12T05:42:38.463 回答
0

由于您的情况,它不会返回第一行..第一行的 endTime 不会

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

小于

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

正因为如此你没有得到第一行..

更新: 如果您仍想返回第一行,您可以创建一个新查询来检查 startDate 是否在给定的输入之间。

于 2013-04-10T07:17:36.983 回答
0

尝试使用以下 SQL 查询

select * from masterdatatable 
where number=? 
and fromdate between startdatetime and enddatetime 
and todate between startdatetime and enddatetime
order by enddatetime
于 2013-04-10T07:19:15.463 回答