我正在尝试按名为 date
的列排序,该列以 MMYYYY
格式存储各种日期(例如,122020
、102019
等)。< /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。
谢谢
答案 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 以进行说明。