Android中按AM / PM时间排序的SQLite

时间:2018-08-07 15:11:53

标签: java android sqlite android-room

以下是字符串中的时间:

01:00 PM 上午11:20 下午04:20

我想在SQLite中按时间排序。

在MySQL中可以这样完成

SimpleSQLiteQuery query = new SimpleSQLiteQuery("SELECT * FROM coursesEntity ORDER BY STR_TO_DATE(startTime, '%l:%i %p') desc");

我知道它在SQLite中不起作用。

但是android SQLite中STR_TO_DATE可以替代吗?

或其他任何方式?

1 个答案:

答案 0 :(得分:1)

假设通过说这是字符串中的时间:01:00 PM 11:20 AM 04:20 PM ,因此这三个值 01:00 PM 11:20 AM 04:20 PM 存储在 startTime 列中,然后按照以下顺序进行排序。

SELECT * FROM coursesEntity ORDER BY substr(startTime,7,2),substr(startTime,1,5);

那是您在排序时利用substr函数SQL As Understood By SQLite - Core Functions - substr提取零件。

但是,建议您使用一种公认的日期时间格式(例如 13:00 11:20 16:20 而不是01:00 PM 11:20 AM)存储日期和时间SQL As Understood By SQLite - Date And Time Functions - Time Strings按照下午04:20)。这样做可以简化事务,因为不需要提取字符串的一部分。

例如,考虑下表中具有提取列 better_startTime 的表,该列存储相同的时间,但格式为HH:MM,那么您可以使用以下其中一种:-

SELECT * FROM coursesEntity ORDER BY time(better_startTime);
SELECT * FROM coursesEntity ORDER BY better_startTime;