MySQL - 按日期列排序,以 MMYYYY 格式存储为文本

时间:2021-06-16 09:00:09

标签: mysql sql

我正在尝试按名为 date 的列排序,该列以 MMYYYY 格式存储各种日期(例如,122020102019 等)。< /p>

我的 SQL 查询如下所示: SELECT `date`, `invested` FROM `savings` WHERE `id` = 123 ORDER BY STR_TO_DATE(`date`, "%m%Y") ASC 但此查询未对输出进行正确排序。

关于如何正确排序的任何想法?

重要说明:此时无法重新分类/修改列的类型。

编辑:我当前的 SQL 查询(如上所述)对日期进行排序:102019、102020、112019、112020。但我的目标是让它像这样:102019、112019、 102020、112020。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试将日期字符串分成两部分(年和月),将每一部分转换为整数,然后按该数字排序:

SELECT 
    date_, 
    invested 
FROM 
    savings
WHERE 
    id = 123
ORDER BY 
    CAST(SUBSTRING(date_, 3, 6) AS UNSIGNED),
    CAST(SUBSTRING(date_, 1, 2) AS UNSIGNED)
;

这将完成工作:) 请参阅此 DB Fiddle 以进行说明。

相关问题