我正在使用android studio和SQLite。我在SQLite中设置了处方表,并使用TEXT类型作为开始日期和结束日期。查询此数据时,我不太确定TEXT是否是适当的数据类型。我想显示开始日期在当前日期之前或等于当前日期,而结束日期在当前日期之前或等于当前日期的记录。下面的代码来自我的DatabaseHelper.java类;
//Create prescription table
public static final String TABLE_PRESCRIPTION = "prescription_table";
public static final String COL_PRESCRIPTION_ID = "PRESCRIPTIONID";
public static final String COL_PRESCRIPTION__PATIENTID = COL_PATIENT_PATIENTID;
public static final String COL_PRESCRIPTION__DATE = "DATE";
public static final String COL_PRESCRIPTION__DRUGNAME = "DRUGNAME";
public static final String COL_PRESCRIPTION__CONCENTRATION = "CONCENTRATION";
public static final String COL_PRESCRIPTION__DOSAGE = "DOSAGE";
public static final String COL_PRESCRIPTION__PREPARATION = "PREPARATION";
public static final String COL_PRESCRIPTION__STARTDATE = "STARTDATE";
public static final String COL_PRESCRIPTION__ENDDATE = "ENDDATE";
public static final String COL_PRESCRIPTION__DOCTORID = "DOCTORID";
public void onCreate (SQLiteDatabase db) {
String prescriptiontable = "CREATE TABLE " + TABLE_PRESCRIPTION + "(PRESCRIPTIONID INTEGER PRIMARY KEY AUTOINCREMENT, PATIENTID INTEGER, DATE TEXT, DRUGNAME TEXT, CONCENTRATION TEXT, DOSAGE TEXT, PREPARATION TEXT, STARTDATE TEXT, ENDDATE TEXT, DOCTORID INTEGER)";
//execute SQL statements
db.execSQL(prescriptiontable);
}
public Cursor getPrescriptionsPerPatient(String patientid){
SQLiteDatabase db = this.getReadableDatabase();
//SQL select statement
Cursor data = db.rawQuery("SELECT * FROM prescription_table WHERE PATIENTID =? AND strftime('%d/%m/%Y',date('now') BETWEEN " +
"STARTDATE AND ENDDATE)",
new String[]{patientid});
return data;
}
错误在getPrescriptionsPerPatient()方法内。任何帮助,将不胜感激!谢谢
假设您将日期存储在one of the formats supported by SQLite中(通常为YYYY-MM-DD
),则可以执行以下操作:
SELECT *
FROM prescription_table
WHERE
patientid = ?
AND date('now') BETWEEN startdate AND enddate