Mysql 如何使用sql查询对数据库列中的月份进行排序(用于分类)

Mysql 如何使用sql查询对数据库列中的月份进行排序(用于分类),mysql,Mysql,在我的一个项目中,我根据月份名称将数据分组为一月、二月。在首页中,我想要一个下拉列表,其中只包含数据库中月份的名称,并且我想要的顺序是一月、二月 $res = $this->db->query('SELECT date FROM tbl_name WHERE category_id="'.$data->category_id.'" GROUP BY date ORDER BY date ASC')->result_array(); 这里,date是数据库中存储月份名称的

在我的一个项目中,我根据月份名称将数据分组为一月、二月。在首页中,我想要一个下拉列表,其中只包含数据库中月份的名称,并且我想要的顺序是一月、二月

$res = $this->db->query('SELECT date FROM tbl_name WHERE category_id="'.$data->category_id.'" GROUP BY date ORDER BY date ASC')->result_array();
这里,date是数据库中存储月份名称的列名, $data->category\u id是某个特定的值


欢迎提供任何帮助和/或建议。提前感谢。

更新:手册中忽略了
%M
。它是这样工作的:

ORDER BY month(str_to_date(`date`, '%M'))
更新结束

你可以试一试

ORDER BY month(str_to_date(`date`, '%b'))
虽然这对我来说只适用于“Jan”,而不适用于“一月”

另一种肯定有效但有点笨拙的方法是

ORDER BY CASE `date` 
WHEN 'January' THEN 1
WHEN 'February' THEN 2
...
ELSE 0 END 

表中的日期格式是什么?我只将日期中的月份名称存储为一月、二月等,而不是完整日期。
%b
用于
Jan、Feb、…
。我想你的意思是
%M
@tombom谢谢bdw JW是正确的,应该是%M。