【问题标题】:How to orderby Time datatype in sqlite?如何在 sqlite 中按时间数据类型排序?
【发布时间】:2014-09-03 10:36:29
【问题描述】:

我有时间以 hh:mm aa 格式例如:01:30 AM。

在创建表时,我将数据类型指定为 TIME。但是没有办法设置它的格式。默认为 HH:MM:SS 格式。因此,在输入 AM/PM 值时,它不会添加到数据库中。

有没有办法使用 TIME 数据类型列以我需要的格式存储我的时间,以便更轻松地进行排序。

我还尝试将时间保存为 TEXT 数据类型。我通过替换 AM/PM 来订购它并进行字符串排序。其中的问题是 12:30 PM 将无法正确排序。

例如:12.30 PM、12.30 AM、02.30 PM 将在 12.30 AM、02.30 PM、12.30 PM 订购

如何订购此列,我可以为此提供什么数据类型?

【问题讨论】:

  • 这就是为什么 24 小时格式更好02:30 PM = 14:00,在 12:30 之后出现。 12:30 AM 真的是00:30
  • 这可能是一个技巧,首先将数据保存在 TIME TYPE 中,但在仅保存 01:30 AM 之前,只需解析 01:30 并保存在 TIME TYPE 和下午 2:30表示根据 24 HRS TIME 它 14:30 将保存它。然后当您检索 SELECT * FROM data ORDER BY to_Time(Time) 并再次重新解析时,您需要 所以最好使用 24 小时格式
  • 参考这个解决方案:- stackoverflow.com/a/45240886/4024250

标签: android sql sqlite


【解决方案1】:

使用hh:mm:ss 在数据库中存储值。 (这是正确排序所必需的,所有built-in time functions。)

使用hh:mm aa 格式(或任何其他格式)来显示值。 您无法预见用户区域设置的默认格式是什么,或者用户是否选择了其他时间格式,因此您必须准备好格式化时间以在任何情况下显示它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 2014-07-26
    • 1970-01-01
    • 2021-04-22
    • 2018-04-17
    相关资源
    最近更新 更多