我有一张表,列出了一年中所有十二个月的col月份。我想在当前月份订购此col,然后按时间顺序排序,如果我现在运行查询;
DEC
JAN
FEB
...
SEPT
NOV
月份的格式为MONTHNAME(STR_TO_DATE(U.month,'%m'))
我从我在这里找到的东西改编了这个,但它只会帮助确保当前月份列在最后的任何想法中?
ORDER BY (CASE
WHEN Month = MONTH(NOW())
THEN 1
ELSE 0
END ) ASC, month ASC
答案 0 :(得分:0)
ORDER BY (CASE
WHEN Month = MONTH(NOW())
THEN 1
ELSE 0
END) DESC, month ASC
或:
ORDER BY (CASE
WHEN Month = MONTH(NOW())
THEN 0
ELSE 1
END) ASC, month ASC
要么应该这样做。
答案 1 :(得分:0)
如果您想坚持几个月的字符串值,可以稍微修改一下。您可能需要使用完整的月份名称,或者使用所有月份的3个字母缩写(我不太确定您使用的是什么格式,因为您的示例显示了缩写,但您还提到了MONTHNAME()
哪些输出整整一个月。这是怎么回事
对于3个字母的月份缩写:
ORDER BY (STR_TO_DATE(CONCAT(`month`, ' 01 2012'), '%b %d %Y')) ASC
完整月份名称:
ORDER BY (STR_TO_DATE(CONCAT(`month`, ' 01 2012'), '%M %d %Y')) ASC
这会将月份值转换为日期(通过添加日期和年份),然后排序。