2011-08-27 60 views
0

我必须做一个查询,但我有日期的问题becase的结构27/08/2011这个查询代码:安卓:带有日期

dt="27/08/2011"; 
db.query(TABLE,null,mydata + "=" + dt,null,null,null,null); 

的问题是,光标总是0.我认为这是数据结构,因为如果我查询其他它工作正常

回答

2

您的日期未被引用,所以SQLite将解释27/08/2011作为一个数学表达式,并将其替换为0(27的整除值除以8除以2011)。你可以自己引用它:

db.query(TABLE, null, mydata + "=" + "'" + dt + "'", null, null, null, null); 

或者更好,use a placeholder

db.query(TABLE, null, mydata + "= ?", new String[] { dt }, null, null, null); 

切换到ISO 8601日期格式也将是一个不错的主意,以避免在日期可能基于地区的不确定性:

String dt = "2011/08/27"; 
Cursor c = db.query(TABLE, null, mydata + "= ?", new String[] { dt }, null, null, null); 
+0

谢谢你的回答。如果我想用你的方法选择mydata和myid,代码如何? – Mimmo

+0

@Mimmo:'mydata'是列名而不是字符串变量?如果是,那么'db.query(TABLE,new String [] {“mydate”,“myid”},“mydata =?”,...' –

+0

这是对的 String dt =“2011/08/27“; String n =”ciao“; 光标c = db.query(TABLE,null,mydata +”=?&&“+ myid +”=?“,new String [] {dt,n},null, null,null); – Mimmo