所以我已经在房子周围走了一段时间而没有让它工作......
我有一个SELECT查询,其中包含一个VARCHAR列(alloc_mth),其中包含MMM-YY格式的日期(例如Jan-15),我想在我的查询中能够ORDER BY。为此,我需要转换为公认的日期格式。我一直在按照here的说明进行操作,但我正努力让它发挥作用。
我的SELECT查询如下......
SELECT `alloc_mth`, SUM(`line_cleared`), SUM(`line_count`), (SUM(`line_cleared`)/SUM(`line_count`))*100 as `Fill`
FROM `allocHist`
GROUP BY 1
ORDER BY CAST('1.' + `alloc_mth` AS DATETIME) ASC;
这样做的最终结果是分组和总和工作正常,但日期格式和排序并不...
这应该有用还是我遗漏了什么?
答案 0 :(得分:2)
使用表达式
'1.' + `alloc_mth`
您正在对字符串执行添加,这在mysql中将评估为1
。连接字符串的方法是使用concat(str1, str2)
。但是,在这种情况下,这应该是不必要的。
您想要使用str_to_date转换为日期。
order by str_to_date(alloc_mth,'%b-%YY')