2009-06-09 12 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

で注文してください。L11_dataはすでに「May-2009」の形式です。 L11_dataが日付または日時フィールドである場合、そのフィールドだけで注文する必要があります。

編集:申し訳ありません、申し訳ありません、 "7月"形式の%Mではありません。 %mは "07"形式を表します。 "7月"形式の%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

+0

ええ、%Mの代わりに%mを書いた、申し訳ありません、私のことを確認してください – Blixt

+0

私は以前このSTR_TO_DATE()を使用していましたが、%mの代わりに%Mを使用するのを忘れてしまいました。私はここに来てこの質問をしました。今良いです:-) – developer

2

あなたのケースでは、データは古いかもしれませんが、新しいシステムを作成するときは、適切な形式でデータを保存する必要があります。 MySQLの月と年のペアは、日付型になります。 MySQLでは、日付は月と日の部分でゼロの値を持つことができます。たとえば、 "00-01-2000"は2000年1月を表します。

データを正確に型付けされたフィールドに保存しておけば、より簡単に。

+0

あなたは正しいです.....私は心に留めておきます... thnkss :-) – developer