Java android order by date and time中的SQLite不工作

Java android order by date and time中的SQLite不工作,java,android,sqlite,Java,Android,Sqlite,我目前正在为android开发一个应用程序,我正在尝试获取数据库中的最后一个条目,该条目由包含日期和时间字符串的列排序 我的问题是,查询的结果总是第一个日期,而不是最后一个日期 我已经试着按“日期”、“日期时间”以及“描述”和“ASC”对我的专栏进行排序 以下是创建包含相关日期的表的查询 private static final String CREATE\u TABLE\u TIMBRAGE=“CREATE TABLE” +TABLE_TIMBRAGE+(“+COLUMN_T_TIMBRAGE

我目前正在为android开发一个应用程序,我正在尝试获取数据库中的最后一个条目,该条目由包含日期和时间字符串的列排序

我的问题是,查询的结果总是第一个日期,而不是最后一个日期

我已经试着按“日期”、“日期时间”以及“描述”和“ASC”对我的专栏进行排序

以下是创建包含相关日期的表的查询

private static final String CREATE\u TABLE\u TIMBRAGE=“CREATE TABLE”
+TABLE_TIMBRAGE+(“+COLUMN_T_TIMBRAGE_PK_TIMBRAGE+”整型主键自动递增唯一值不为空,”
+列\u T\u TIMBRAGE\u DATETIMBRAGE+“DATETIME不为空,”+列\u T\u TIMBRAGE\u INOUT+“INT不为空,”
+列\u-T\u-TIMBRAGE\u-FK\u-EMPLOYE+“INT NOT NULL,+”外键(“+COLUMN\u-TIMBRAGE\u-FK\u-EMPLOYE+”)引用“+TABLE\u-EMPLOYE+”(“+COLUMN\u-T\u-EMPLOYE\u-PK\u-EMPLOYE+”)
这是我的日期格式化程序

SimpleDateFormat格式化程序=新的SimpleDateFormat(“dd.MM.yyyy”-“HH:MM:ss”,Locale.FRANCE);
下面是我如何添加到这个表中的

ContentValues=新ContentValues();
value.put(COLUMN\T\u TIMBRAGE\u DATETIMBRAGE,FORMATTER.format(TIMBRAGE.getDateTimbrage());
value.put(列\u T\u TIMBRAGE\u INOUT,TIMBRAGE.getInOut());
value.put(列\T_TIMBRAGE\u FK_EMPLOYE,TIMBRAGE.getFK_EMPLOYE());
SQLiteDatabase db=this.getWritableDatabase();
db.insert(表_TIMBRAGE,null,值);
db.close();
最后,这是我的查询,应该得到最后一个条目

String query2=“从“+表”中选择*,其中“+列\u-TIMBRAGE\u-FK\u-EMPLOYE+”=\”“+FK\u-EMPLOYE+“\”“+”按日期时间排序(“+列\u-TIMBRAGE\u-DATETIMBRAGE+”)ASC限制1”;
游标cursor2=db.rawQuery(query2,null);
我得到的结果是

“2019年5月23日星期四15:34:58 GMT+02:00”

但我应该

“2019年5月23日星期四15:56:32 GMT+02:00”


与其将日期保存为字符串,不如将所述日期转换为1970年1月1日以来的毫秒。这样,排序非常简单,比较数字更有效。然后,在查询数据时,您可以将毫秒转换为格式化日期。

尝试以下方法:

SELECT  * FROM  + YOUR_TABLE_NAME +  ORDER BY + YOUR_DATETIME_COLUMN_NAME + DESC

我建议您应该使用
DATETIME DEFAULT CURRENT_TIMESTAMP
作为
DATETIME
列类型。每当您插入或更新行时,这会自动更新
DATETIME

将日期格式更改为:
yyyy.MM.dd'-'HH:MM:ss
或类似格式,因为您使用的格式不可比SQLite对日期一无所知,所以它将所有内容都视为文本。如果您使用所支持的格式之一,则可以对时间戳进行有意义的排序。