3

簡単な質問: 次のクエリが出力しないのはなぜperdayですか?

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

Count は正しく出力されますが、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 |
4

3 に答える 3

6

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
于 2013-06-01T09:27:58.303 に答える
0

あなたはこれを探しているかもしれません

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

デモはこちら

于 2013-06-01T09:32:32.413 に答える
0

MySQLは式DATE()から DATE 部分を取り出します。このクエリは問題ありません。DATETIMEExpected output

SELECT
  DATE(`date`) AS `perday`,
  COUNT(*) AS `count`
FROM `data`
GROUP BY `perday`
于 2013-06-01T09:34:35.803 に答える