【问题标题】:Sort W/YYYY date format排序 W/YYYY 日期格式
【发布时间】:2020-05-12 02:02:06
【问题描述】:

你将如何对 Mysql 数据库中的字符串进行排序,其格式为:

W/YYYY

例子:

1/2020
1/2020
2/2020
3/2020
4/2020
4/2020
10/2020
11/2020
11/2020
30/2020
31/2020

我想获取按最新周数排序的各个日期。现在我正在使用这个 SQL 命令来获取单个日期:

SELECT DISTINCT `week` FROM `mytable`;

可以在 SQL 或 PHP 中获得这样的输出吗?

31/2020
30/2020
11/2020
10/2020
4/2020
3/2020
2/2020
1/2020

【问题讨论】:

    标签: php mysql sql sorting


    【解决方案1】:

    使用字符串函数。对于降序:

    order by right(week, 4) desc,
             substring_index(week, '/', 1) + 0 desc
    

    另一种方法不转换为数字:

    order by right(week, 4) desc,
             length(week) desc,
             week desc
    

    【讨论】:

    • 由于字符串如何转换为数字,right(week, 4) desc, week + 0 desc 也应该可以工作。
    • @PaulSpiegel 。 . .我知道。但这是隐式转换的侥幸。 cast(week as unsigned) 会产生错误。当有一个简单的解决方法时,提出如此接近产生错误的建议似乎很尴尬。
    • 嗯.. cast(week as unsigned) 为我工作。但我明白了,可能不会在生产代码中使用它。
    猜你喜欢
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2017-10-06
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多