【问题标题】:Get 12hrs time in ascending order using mysql使用mysql按升序获取12小时时间
【发布时间】:2020-05-21 10:40:43
【问题描述】:

我必须根据时间升序获取记录,但它检索的数据是 01:pm 而不是 09:am 和最后 11:00 am 这里存储在列中的时间是 12 小时格式,列结构是 varcha 但出于某种原因我不能把它改成mysql时间,所以如何根据am pm升序获取时间

SELECT * 
FROM table 
ORDER BY STR_TO_DATE(time_slot,'%h.%i%p')

current output:
01:00 pm
09:00 am
11:00 am


Expected output:

09:00 am
11:00 am
01:00 pm

【问题讨论】:

  • 通过切换到适当的数据类型,事情可能会得到不可估量的改善。

标签: mysql sql datetime time sql-order-by


【解决方案1】:

使用下面的sql:

SELECT * 
FROM table_name 
ORDER BY STR_TO_DATE(timeField,'%h:%i %p');

【讨论】:

    【解决方案2】:

    问题在于您的格式描述与输入字符串不匹配:它的分隔符错误(. 而不是:)。结果,您的转换返回 null,实际上并没有发生排序,导致记录以 undefined 顺序呈现。

    您可以使用以下语句轻松检查这一点,该语句返回null

    SELECT STR_TO_DATE('01:00 pm','%h.%i%p')
    

    我认为你想要:

    ORDER BY STR_TO_DATE(time_slot,'%h:%i %p')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 2016-10-13
      • 1970-01-01
      • 2022-08-16
      相关资源
      最近更新 更多