2013-06-01 43 views
3

簡單問題:爲什麼以下查詢不輸出perdayMysql查詢提取日期+天數組

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. 

謝謝!

編輯:

預期輸出:

| 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`