【发布时间】:2015-08-19 11:27:02
【问题描述】:
public class DbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "assignment_info.db";
public static final String ASSIGNMENT_ID = "_id";
public static final String ASSIGNMENT_VALUE = "assignment_value";
public static final String ASSIGNMENT_RESULT = "assignment_result";
public static final String SUBJECT = "subject";
public static final String ASSIGNMENT_TITLE = "assignment_title";
public static final String DUE_DATE = "due_date";
public static final String NOTES_ASSIGNMENT = "notes";
public static final String TABLE_NAME_ASSIGNMENT = "assignment_information";
private static final String ADD_QUERY = "CREATE TABLE "+
TABLE_NAME_ASSIGNMENT+"("+
ASSIGNMENT_ID+" INTEGER PRIMARY KEY AUTOINCREMENT,"+
SUBJECT+" TEXT,"+
ASSIGNMENT_VALUE+" INTEGER,"+
ASSIGNMENT_RESULT+" DOUBLE,"+
ASSIGNMENT_TITLE+" TEXT,"+
DUE_DATE+" DATE,"+
NOTES_ASSIGNMENT+" TEXT);";
public DbHelper(Context context){
super(context,DATABASE_NAME,null,DATABASE_VERSION);
Log.e("Database Operations","Database opened/created from constructor.");
}
@Override
public void onCreate(SQLiteDatabase db) {
//IF DATABASE IS CREATED FOR FIRST TIME THIS METHOD WILL BE CALLED
db.execSQL(ADD_QUERY);
db.execSQL(ADD_NOTES_QUERY);
Log.e("Database Operations"," DbHelper - onCreate called ");
}
我有一个 SQLite 表,其中包含存储为字符串的日期 >>
"+ DUE_DATE+" STRING," .
我想选择从今天到 7 天之间的所有行。
这是我目前所拥有的,它不会返回任何结果,
String sql = "SELECT * FROM " + TABLE_NAME_ASSIGNMENT + " WHERE "+ DUE_DATE + " >= date('now') AND date('now','+7 days')";
有人可以帮忙吗? 谢谢
创建表 TABLE_NAME_ASSIGNMENT
(ASSIGNMENT_IDINT,SUBJECTTEXT,ASSIGNMENT_TITLETEXT,DUE_DATEDATE)
;
插入 TABLE_NAME_ASSIGNMENT
(ASSIGNMENT_ID, SUBJECT, ASSIGNMENT_TITLE, DUE_DATE)
价值观
(1,'数学','质数','2015-08-22'),
(2, '科学', '元素周期表', '2015-08-30'),
(3,'数学','奇数','2015-09-02')
;
选择 *
来自 TABLE_NAME_ASSIGNMENT
WHERE Due_Date BETWEEN date('now') AND date('now','+7 days')
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 10 行的 ''+7 days')' 附近使用正确的语法
【问题讨论】:
-
如果
due_date是表中的一列,为什么要使用连接?查询不应该是:WHERE DUE_DATE >= date('now') ... -
应该是:
String sql = "SELECT * FROM " + TABLE_NAME_ASSIGNMENT + " WHERE Due_Date BETWEEN date('now') AND date('now','+7 days')" -
String sql = "SELECT * FROM " + TABLE_NAME_ASSIGNMENT + " WHERE "+ DUE_DATE + " BETWEEN date('now') AND date('now','+7 days')";光标 mycursor = sqLiteDatabase.rawQuery(sql, null);返回我的光标;将其用作原始查询
-
恐怕这也不起作用弗兰克,日期列应该存储为日期还是字符串?
-
文本。格式为:
YYYY-MM-DD