我想基于2018-01、2018-02等日期对查询进行排序。 但是我没有得到正确的结果
这是我尝试过的。
select
concat(YEAR(trn.date), '-', MONTH(trn.date)) as date_result
FROM ....
ORDER BY date_result
date_result
2018-1
2018-10
2018-11
2018-12
2018-2
答案 0 :(得分:2)
您必须提及排序顺序,例如“ asc”或“ desc”。 因此查询应类似于: 选择
concat(YEAR(trn.date),'-',MONTH(trn.date))作为date_result
从....
ORDER BY date_result desc
答案 1 :(得分:2)
select
concat(YEAR(trn.date), '-', MONTH(trn.date)) as date_result
FROM yourtablename
ORDER BY YEAR(trn.date),MONTH(trn.date) order by date_result desc
答案 2 :(得分:1)
按子句顺序添加YEAR(trn.date),MONTH(trn.date)
select
concat(YEAR(trn.date), '-', MONTH(trn.date)) as date_result
FROM yourtablename
ORDER BY YEAR(trn.date),MONTH(trn.date)
答案 3 :(得分:1)
如果您只想对结果进行排序,而不是将其从2018-1
更改为2018-01
,则可以使用的查询是:
SELECT
concat(YEAR(trn.DATE), '-', MONTH(trn.DATE)) AS date_result
FROM ....
ORDER BY trn.DATE;
如果您想像2018-01
那样更改结果,请使用以下查询:
SELECT
DATE_FORMAT(trn.DATE, '%Y-%m') AS date_result
FROM ....
ORDER BY trn.DATE;
答案 4 :(得分:1)
函数MONTH
返回一个整数值。因此,您正在丢失前导零。
您可以转换为varchar并添加前导零,也可以仅使用SUBSTRING
选择月份。
铸造解决方案:
SELECT concat(YEAR(trn.DATE), '-', RIGHT('0' + CAST(MONTH(trn.date) AS varchar(2)),2) ) as date_result
FROM ....
ORDER BY trn.DATE;
带子字符串的解决方案:
SELECT concat(YEAR(trn.DATE), '-', SUBSTRING(trn.date,6,2)) as date_result
FROM ....
ORDER BY trn.DATE;