在HeidiSQL中对月份名称进行排序

时间:2015-02-01 08:37:12

标签: mysql sql sorting

我是SQL的新手。我目前有一个包含4列的数据库:年,月,日和总金额(月份是字符串格式:Jan,Feb,...)。此外,我正在使用HeidiSQL开发数据库。

因此,我可以问一下,如何按月,二月,......等顺序对月份列进行排序?我确实尝试了SORT BY月,但似乎数据库按字母顺序排序。

请帮助我,非常感谢。

2 个答案:

答案 0 :(得分:2)

在MySQL中,您可以使用str_to_date将短月名称转换为datetime

select str_to_date('Jul', '%b');

您可以使用此命令:

order by
        year
,       str_to_date(month, '%b')
,       day

Example at SQL Fiddle.

答案 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。)