2013-11-26 4 views
2

У меня есть таблица MySQLПолучить MySQL результирующий набор, сгруппированные по месяцам

Create table temp_table (
Tmp_id int(10) auto_increment, 
paid tinyint default 0, 
date_received DATETIME NULL, 
PRIMARY KEY (Tmp_id) 
) 

Я хочу, чтобы запросить все записи, которые заплатили = 0, но я хочу это результат быть месяцы, когда оплаченные = 0 имеет значение правда.

Например, финансы могут видеть короткий список записей, только отображая необходимые месяцы.

Спасибо за помощь.

+0

У вас должен быть столбец месяца для GROUP BY. – duffymo

ответ

1

Вы можете использовать следующие получить месяц и год:

SELECT YEAR(Date_Received) AS `Year`, 
     MONTH(Date_Received) AS `Month`, 
     COUNT(*) AS Records 
FROM Temp_Table 
WHERE Paid = 0 
GROUP BY YEAR(Date_Received), MONTH(Date_Received); 

Или, если вы хотите сохранить его в формате даты, вы можете использовать:

SELECT DATE_FORMAT(Date_Received,'%Y-%m-01') AS MonthStart 
FROM Temp_Table 
WHERE Paid = 0 
GROUP BY DATE_FORMAT(Date_Received,'%Y-%m-01'); 

Это просто включить все даты в первый месяц, так что все записи с ноября 2013 года будут показаны как 2013-11-01, это удобно, если вы хотите отправить дату на свой прикладной уровень, чтобы вы все еще могли manuplate его как дату (например, изменить язык/формат отображения).

+0

Это отлично работало. Есть ли способ на самом деле выбрать это как решение? – user2977468

+0

Мне нравится функция native, это снижает мою работу с кодом. Спасибо Гарет! – user2977468

+0

[Нажмите зеленый галочку рядом с ответом] (http://meta.stackexchange.com/a/5235/179361), хотя [существует ограничение по времени на 15 минут] (http://meta.stackexchange.com/ q/50697), которые, возможно, еще не прошли. – GarethD

Смежные вопросы