【问题标题】:Sorting varchar field containing time numerically以数字方式对包含时间的 varchar 字段进行排序
【发布时间】:2018-12-16 22:14:56
【问题描述】:

我正在使用 varchar 字段来存储时间符号(格式:00:00)。 我如何对该字段的结果进行排序,以便例如 08:00 在 10:00 之前出现? 感谢您的支持。

【问题讨论】:

标签: mysql sql sorting date datetime


【解决方案1】:

理想情况下,您应该将数据存储为TIME,但您始终可以按需将CAST 存储为date time literals

ORDER BY CAST(thetime AS TIME)

【讨论】:

  • 谢谢。这有效,以及按 ABS(时间)排序。 (顺便说一句:不投票,因为我的声誉仍然不允许我)
【解决方案2】:

ORDER BY 子句中使用TIME_FORMAT 函数

假设您的列名为 thetime 并且始终表示为 24 小时格式 hours:minutes (23:43)

ORDER BY TIME_FORMAT(thetime, '%H:%i');  

【讨论】:

    【解决方案3】:

    你没有问题。 '08:00' 小于 '10:00'

    你没有问题,因为你已经对字符串进行了零填充。这适用于高达'99:59'。如果您需要三位数的小时数,则需要为该小时存储一个加法 0'008:00'' and'010:00'`。

    当然,您也可以使用TIME 数据类型。这通常是有道理的,但它的范围有限,而且它会在一段时间内存储亚分钟部分(因此在某些情况下,它可能不完全适合您的需求)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-04
      • 2013-10-16
      • 2017-10-06
      • 2018-09-05
      • 2011-06-08
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      相关资源
      最近更新 更多