我目前正在为 android 开发一个应用程序,我正在尝试获取我的数据库中的最后一个条目,该条目由包含带有日期和时间的字符串的列排序。我的问题是查询结果总是第一个日期而不是最后一个。我已经尝试按“日期”、“日期时间”以及“DESC”和“ASC”对我的专栏进行排序。以下是创建包含相关日期的表的查询private static final String CREATE_TABLE_TIMBRAGE="CREATE TABLE " + TABLE_TIMBRAGE + "(" + COLUMN_T_TIMBRAGE_PK_TIMBRAGE + " INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, " + COLUMN_T_TIMBRAGE_DATETIMBRAGE + " DATETIME NOT NULL, " + COLUMN_T_TIMBRAGE_INOUT + " INT NOT NULL, " + COLUMN_T_TIMBRAGE_FK_EMPLOYE + " INT NOT NULL, "+ "FOREIGN KEY(" + COLUMN_T_TIMBRAGE_FK_EMPLOYE + ") REFERENCES " + TABLE_EMPLOYE + "("+COLUMN_T_EMPLOYE_PK_EMPLOYE+") "这是我的日期格式化程序SimpleDateFormat FORMATTER=new SimpleDateFormat("dd.MM.yyyy'-'HH:mm:ss", Locale.FRANCE);这是我添加到该表中的方式ContentValues values = new ContentValues(); values.put(COLUMN_T_TIMBRAGE_DATETIMBRAGE, FORMATTER.format(timbrage.getDateTimbrage())); values.put(COLUMN_T_TIMBRAGE_INOUT, timbrage.getInOut()); values.put(COLUMN_T_TIMBRAGE_FK_EMPLOYE, timbrage.getFK_Employe()); SQLiteDatabase db = this.getWritableDatabase(); db.insert(TABLE_TIMBRAGE, null, values); db.close();最后这是我的查询,应该得到最后一个条目String query2 = "Select * FROM " + TABLE_TIMBRAGE + " WHERE " + COLUMN_T_TIMBRAGE_FK_EMPLOYE + " = \"" + FK_Employe + "\"" + " ORDER BY datetime("+ COLUMN_T_TIMBRAGE_DATETIMBRAGE +") ASC LIMIT 1 "; Cursor cursor2 = db.rawQuery(query2, null);我得到的结果是“2019 年 5 月 23 日星期四 15:34:58 GMT+02:00”但我应该得到“2019 年 5 月 23 日星期四 15:56:32 GMT+02:00”
2 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
与其将日期保存为字符串,不如将所述日期转换为自 1970 年 1 月 1 日以来的毫秒数。这样,排序非常简单,比较数字也更有效。然后,您可以在查询数据时将毫秒数转换为格式化的日期。
慕码人8056858
TA贡献1803条经验 获得超6个赞
尝试这个:
SELECT * FROM + YOUR_TABLE_NAME + ORDER BY + YOUR_DATETIME_COLUMN_NAME + DESC
我有一个建议,你应该使用DATETIME DEFAULT CURRENT_TIMESTAMP
作为你的DATETIME
列类型。这会DATETIME
在您插入或更新行时自动更新。
添加回答
举报
0/150
提交
取消