我是SQL方面的新手。我目前有一个包含4列的数据库:年份、月份、日和总金额(月份采用字符串格式: Jan、Feb、.)。此外,我正在使用HeidiSQL开发数据库。
因此,我是否可以问一下,如何按照一月、二月、.这样的顺序对月份列进行排序?我确实试过按月排序,但似乎数据库是按字母排序的。
请帮帮我,非常感谢。
发布于 2015-02-01 09:41:48
在MySQL中,可以将短月名称转换为带有str_to_date的datetime
select str_to_date('Jul', '%b');您可以通过以下方式使用此命令进行订购:
order by
year
, str_to_date(month, '%b')
, daySQL Fiddle中的示例。
发布于 2015-02-01 13:57:52
如果您希望独立于MySQL服务器的国际化设置,并且仍然使用英文月份名称进行搜索,则可以使用field()。
order by field(monthcol, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')我之所以提到这一点,是因为%b in str_to_date()是由地区设置控制的,因此它并不总是适用于英语月名。(控制此操作的参数是lc_time_names,描述为这里。)
https://stackoverflow.com/questions/28260929
复制相似问题