Php 按月份和年份排序

Php 按月份和年份排序,php,mysql,Php,Mysql,我有一些条目包含月份数据 像 现在我希望通过mysql查询每月对这些数据进行排序 $q=mysql_query(SELECT id,action, L1_data, L2_data, L3_data, L11_data from table where action='feild name' ORDER BY DATE_FORMAT(L11_data,'%m-%Y') DESC); while($r=mysql_fetch_array(

我有一些条目包含月份数据

现在我希望通过mysql查询每月对这些数据进行排序

$q=mysql_query(SELECT id,action,
     L1_data,
     L2_data,
     L3_data,
     L11_data 
  from table 
  where action='feild name' 
  ORDER BY DATE_FORMAT(L11_data,'%m-%Y') DESC);

while($r=mysql_fetch_array($q))
{
-------
}
这里的L11_数据是包含所有月份值的数据(如2009年5月等)

我正在使用此查询,但它没有帮助。 我想显示的是从2009年5月到2000年1月的数据
有人能推荐一些代码吗?

假设
L11\u数据
的格式已经是“May-2009”,您应该通过
STR\u TO\u DATE(L11\u数据,%m-%Y')
订购。如果
L11\u data
是日期或日期时间字段,则应仅按该字段排序

编辑:对不起,对于“七月”格式,应该是%M而不是%M。%m表示“07”格式。%b表示“Jul”格式


假设
L11\u数据
的格式已经是“May-2009”,您应该按
STR\u-TO\u日期(L11\u数据,%m-%Y')
订购。如果
L11\u data
是日期或日期时间字段,则应仅按该字段排序

编辑:对不起,对于“七月”格式,应该是%M而不是%M。%m表示“07”格式。%b表示“Jul”格式


在您的情况下,数据可能是遗留的,但在创建新系统时,您应该以适当的格式存储数据。对于MySQL中的月-年对,它将是日期类型。在MySQL中,日期的月份和日期部分可以为零值,例如“00-01-2000”表示2000年1月


如果您将数据保存在一个精确键入的字段中,则选择和排序更容易。

在您的情况下,数据可能是遗留的,但在创建新系统时,您应该以适当的格式存储数据。对于MySQL中的月-年对,它将是日期类型。在MySQL中,日期的月份和日期部分可以为零值,例如“00-01-2000”表示2000年1月


如果您将数据保存在一个精确键入的字段中,则选择和排序会更容易。

Thnx适用于您的解决方案,但它显示的结果与DATE\U格式相同……。不知道原因:-(我使用的是此STR\U TO\U DATE()之前,但完全忘记使用%M而不是%M,在感到恼怒之后,我来到这里问这个问题……好吧,thanx很多Blixt……我的查询现在运行良好……:-)Thnx用于您的解决方案,但它显示的结果与DATE\u格式相同……。不知道为什么:-(我正在使用此STR\u to\u DATE()以前,但完全忘记了使用%M而不是%M,在感到恼火之后,我来到这里问这个问题……好吧,thanx很多Blixt……我的查询现在运行良好……:-)
$q=mysql_query(SELECT id,action,
     L1_data,
     L2_data,
     L3_data,
     L11_data 
  from table 
  where action='feild name' 
  ORDER BY DATE_FORMAT(L11_data,'%m-%Y') DESC);

while($r=mysql_fetch_array($q))
{
-------
}
SELECT
    id, action,
    L1_data, L2_data,
    L3_data, L11_data 
FROM table 
WHERE action = 'field name' 
ORDER BY STR_TO_DATE(L11_data, '%M-%Y') DESC