我有月份和年份的列,数据类型为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
我可以做些什么来获得预期的输出?
答案 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)
我的建议是将表格中year
和month
的数据类型更改为INT
,因为它存储在VARCHAR
时没有任何好处,运行您自己的代码,它将返回预期的结果而不进行更改
ALTER TABLE <tablename> MODIFY <columnname> INT UNSIGNED;