我是SQL的新手。我目前有一个包含4列的数据库:年,月,日和总金额(月份是字符串格式:Jan,Feb,...)。此外,我正在使用HeidiSQL开发数据库。
因此,我可以问一下,如何按月,二月,......等顺序对月份列进行排序?我确实尝试了SORT BY月,但似乎数据库按字母顺序排序。
请帮助我,非常感谢。
答案 0 :(得分:2)
在MySQL中,您可以使用str_to_date
将短月名称转换为datetime
:
select str_to_date('Jul', '%b');
您可以使用此命令:
order by
year
, str_to_date(month, '%b')
, day
答案 1 :(得分:1)
如果您想独立于MySQL服务器的国际化设置并仍然按英文月份名称搜索,您可以使用field()
:
order by field(monthcol, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
我之所以提到这一点,是因为%b
中的str_to_date()
由区域设置控制,因此它不会始终适用于英文月份名称。 (控制此项的参数为lc_time_names
,描述为here。)