сортировка по месяцам и годам - PullRequest
0 голосов
/ 09 июня 2009

У меня есть записи с помесячными данными

как

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 г. по январь 2000 г. Кто-нибудь может предложить какой-нибудь код для этого?

Ответы [ 2 ]

2 голосов
/ 09 июня 2009

В вашем случае данные могут быть устаревшими, но при создании новых систем вы должны хранить данные в соответствующем формате. Для пар месяц-год в MySQL это будет тип даты. В MySQL даты могут иметь нулевое значение в частях месяца и дня, например, «00-01-2000» будет означать январь 2000 года.

Если у вас есть данные, сохраненные в точно набранном поле, выбор и сортировка намного проще.

2 голосов
/ 09 июня 2009

Вы должны заказать по STR_TO_DATE(L11_data, '%m-%Y'), предполагая, что L11_data уже в формате "май-2009". Если L11_data является полем даты или даты и времени, вам следует упорядочить только по этому полю.

Редактировать: Извините, это должно быть% 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...