2013-07-01 56 views
0

我只是好奇,是date保留字我SQLite?我有一个被命名为日期列,并试图运行此查询:SQLite查询 - 日期保留字?

DELETE FROM cases WHERE date <= date('now','-1 day') 

通过这样做:

String query = "DELETE FROM cases WHERE date <= date('now','-1 day')"; 

     SQLiteDatabase db = this.getWritableDatabase(); 

     Cursor cursor = db.rawQuery(query, null); 
     boolean found = cursor.moveToFirst(); 
     if(found) { 
      int result = cursor.getCount(); 
      Log.w("DeleteOldCases: ", "Result: " + Integer.toString(result)); 
      db.close(); 
     } 

但光标只是给了我一个假回来,打电话moveToFirst时。但在我的数据库中,实际上有一些行比一天早。任何人都可以在这里解释什么是错的吗?

谢谢!

+0

我是这么认为的,因为它也是一种类型,而这样做的CREATE TABLE ,但很容易尝试并改变它的权利? –

+1

顺便说一句,我认为引用它会解决它。 –

回答

0

是的,它似乎是一个保留字。

看看:http://www.sqlite.org/lang_datefunc.html

date(timestring, modifier, modifier, ...) 

很奇怪有一个游标形成DELETE语句。尝试在

SELECT * FROM cases WHERE date <= date('now','-1 day') 

拆分操作,然后执行你的支票

SQLiteDatabase db = this.getWritableDatabase(); 
Cursor cursor = db.rawQuery(query, null); 
boolean found = cursor.moveToFirst(); 
if(found) { 
    int result = cursor.getCount(); 
    Log.w("DeleteOldCases: ", "Result: " + Integer.toString(result)); 
    db.close(); 
} 

,然后执行删除部分

DELETE FROM cases WHERE date <= date('now','-1 day') 
+0

但我可以创建数据库,并对其执行不同的查询。所以也许不是? –

+0

你可以尝试使用[table.field]来识别列吗? –

+0

也许,我会试试:) –