2013-06-01 3 views
3

Простой вопрос: Почему следующий запрос не выводится perday?Mysql запрос на извлечение даты + группировка по дате

SELECT FROM_UNIXTIME(`date`,"%Y-%m-%d") AS `perday`, COUNT(*) AS `count` 
FROM `data` 
WHERE `group` = 1 
GROUP BY `perday` 

Граф получает выводимый правильно, но perday остается пустым. таблица data, как:

| id | group |   date   | 
------------------------------------------------ 
| 1 |  1  | 2013-04-13 06:01:02 | 
| 2 |  1  | 2013-04-13 14:24:18 | 
| 3 |  2  | 2012-01-21 21:33:03 | 
       Ect. 

Спасибо!

EDIT:

Ожидаемый результат:

| perday | 
-------------- 
| 2013-04-13 | 
| 2012-01-21 | 
+0

Какой результат вы ожидаете точно? –

+0

Я положил ожидаемый результат в редактирование ... И почему downvote? – Laurent

ответ

5

удалить WHERE положение,

SELECT FROM_UNIXTIME(date,'%Y-%m-%d') AS perday, 
     SUM(`group` = 1) AS `count` 
FROM data 
GROUP BY FROM_UNIXTIME(date,'%Y-%m-%d') 

если дата в формате 2013-04-13 06:01:02, то зачем использовать FROM_UNIXTIME? Разве это не DATE_FORMAT?

SELECT DATE_FORMAT(date, '%Y-%m-%d') AS perday, 
     SUM(`group` = 1) AS `count` 
FROM data 
GROUP BY DATE(date) 
ORDER BY date 

Это отобразит все доступные даты в таблице.

Но если вы хотите, чтобы выбранный group только,

SELECT DATE_FORMAT(date, '%Y-%m-%d') AS perday, 
     COUNT(*) AS `count` 
FROM data 
WHERE `group` = 1 
GROUP BY DATE(date) 
ORDER BY date 
+0

Работает с использованием DATE_FORMAT()! Благодарю. – Laurent

+0

приветствуется ':)' –

0

вы можете искать эту

SELECT DATE_FORMAT(`date`,"%Y-%m-%d") AS `perday`, COUNT(*) AS `count` 
    FROM `data` 
    WHERE `group` = 1 
    GROUP BY `perday` 

DEMO HERE

0

MySQL DATE() принимает часть DATE из выражения DATETIME. Как ваш Expected output этот вопрос в порядке.

SELECT 
    DATE(`date`) AS `perday`, 
    COUNT(*) AS `count` 
FROM `data` 
GROUP BY `perday` 
Смежные вопросы