如何在MySQL中按月,年排序?

时间:2017-01-16 09:38:27

标签: mysql sql database

我有月份和年份的列,数据类型为varbinary

我试过了:

SELECT * FROM traffic
WHERE '2015'<= year AND year <='2015'
    AND NOT (
       ( 2015= year AND month <05) OR
        ( 2015= year AND month >11)
    ) ORDER BY Year, month;

输出结果为:

month
10
11
5
6
7
8
9

但我想要

month
5
6
7
8
9
10
11

我可以做些什么来获得预期的输出?

3 个答案:

答案 0 :(得分:2)

您需要将月份字符串转换为int

order by cast(month as unsigned)

答案 1 :(得分:1)

试试这个,

select * from traffic
WHERE '2015'<= year AND year <='2015'
    AND NOT (
       ( 2015= year AND month <05) OR
        ( 2015= year AND month >11)
    ) ORDER BY Year * 1,month * 1;

* 1会将字符串数据类型转换为月整数。

答案 2 :(得分:0)

我的建议是将表格中yearmonth的数据类型更改为INT,因为它存储在VARCHAR时没有任何好处,运行您自己的代码,它将返回预期的结果而不进行更改

ALTER TABLE <tablename> MODIFY <columnname> INT UNSIGNED;
相关问题