SQLite запрашивает даты в соответствующем диапазоне - PullRequest
0 голосов
/ 02 марта 2020

Я использую android studio и SQLite. Я установил мою prescription_table в SQLite и использовал тип TEXT для моей начальной и конечной даты. Я не слишком уверен, является ли TEXT подходящим типом данных при запросе этих данных. Я хочу отобразить записи, где начальная дата больше или равна текущей дате, а конечная дата больше или равна текущей дате. Приведенный ниже код взят из моего DatabaseHelper. java class;

 //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;
    }

Ошибка в методе getPrescriptionPerPatient (). Любая помощь будет оценена! Спасибо

1 Ответ

0 голосов
/ 02 марта 2020

Предполагая, что вы храните даты в одном из форматов, поддерживаемых SQLite (обычно: YYYY-MM-DD), вы можете просто сделать:

SELECT * 
FROM prescription_table 
WHERE 
    patientid = ? 
    AND date('now') BETWEEN startdate AND enddate
...