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