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

标签 java android sqlite android-room

以下是字符串中的时间:

01:00 下午 上午 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 的替代方案?

或者有其他方法可以做到这一点吗?

最佳答案

假设通过说这里是字符串中的时间:01:00 PM 11:20 AM 04:20 PM,因此三个值01:00 PM11:20 AM04: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 04:20 PM)按照SQL As Understood By SQLite - Date And Time Functions - Time Strings 。这样做可以简化问题,因为不需要提取部分字符串。

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

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

关于java - Android 中的 SQLite 按 AM/PM 时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51730115/

相关文章:

performance - SQLITE:有关使用AUTOINCREMENT的最佳实践

java - 为什么我的 Eclipse 加载时会出现虚拟断点和旧错误?

java - 如何向网页发送和接收信息?

java - 预配置的虚拟机?

android - 调整网页以适应任何设备

android - 背景地理围栏真的适用于 Android 8+ 吗?

Sqlite:如何重置所有数据库表?

java - 尽管不在任何框架或 iframe 或窗口内,但无法单击链接

android - NavigationView 和 ActionBarDrawerToggle

sqlite - 更改 sqlite 表以添加具有默认值的时间戳列