2009-06-09 2 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"형식 인 경우 STR_TO_DATE(L11_data, '%m-%Y')으로 주문해야합니다. L11_data이 날짜 또는 날짜/시간 필드 인 경우 해당 필드로만 주문해야합니다.

편집 : 죄송합니다. "7 월"형식의 % M이 (가) % 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을 사용하는 것을 잊어 버렸습니다. 짜증이 나서이 질문을하기 위해 여기에 왔습니다. ...... 잘 고맙습니다 Blixt ... 내 쿼리가 실행 중입니다. 이제 괜찮아 ....-) – developer

2

경우에 따라 데이터가 레거시 일 수 있지만 새 시스템을 만들 때 적절한 형식으로 데이터를 저장해야합니다. MySQL에서 월 - 일 쌍의 경우 날짜 유형이됩니다. MySQL에서 날짜는 월 및 일 부품에 0을 가질 수 있습니다. 예를 들어, "00-01-2000"은 2000 년 1 월을 나타냅니다.

데이터를 정확하게 유형화 된 필드에 저장 한 경우 선택 및 정렬이 더 쉽습니다.

+0

예, 당신 말이 맞아요. 나는 그걸 염두에 두겠습니다 ... thnkss :-) – developer