2009-06-09 77 views
0

我有一些项目具有月份明智数据分拣月 - 年明智

May-2009 
April-2009 
March-2009 
- 
- 
- 
- 
- 
- 
January-2000 

现在我想这些数据每月通过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_data是具有所有月份值而确定一(例如,可以-2009等)

我使用此查询,但它是没有帮助的。 我想要的是从2009年5月到2000年1月的月份显示数据 任何人都可以请为此建议一些代码?

回答

2

您应该订购STR_TO_DATE(L11_data, '%m-%Y'),假设L11_data已经采用格式“2009年5月”。如果L11_data是日期或日期时间字段,则应该单独按该字段排序。

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

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 
+0

Thnx为您的解决方案,但它显示了与DATE_FORMAT相同的结果...........不知道为什么:-( – developer 2009-06-09 12:17:45

+0

是的,我写%m而不是%M,对不起,检查我的编辑 – Blixt 2009-06-09 12:19:11

+0

我之前使用了STR_TO_DATE(),但完全忘记了使用%M而不是%m,并且在变得恼火之后,我来到这里问这个......以及比很多Blixt ...我的查询正在运行现在罚款.... :-) – developer 2009-06-09 12:25:40

2

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

如果您将数据保存在精确类型的字段中,则选择和排序方式更轻松。

+0

你是对的.....我会记住这一点... thnkss :-) – developer 2009-06-09 12:38:43