以下是字符串中的时间:
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可以替代吗?
或其他任何方式?
答案 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;