我有一个表格,可以输入像这样的新注册用户
mytable
+----+---------------------+------+
| id | timestamp | name |
+----+---------------------+------+
| 1 | 2014-06-03 00:02:40 | john |
+----+---------------------+------+
| 2 | 2014-06-03 00:02:41 | sue |
+----+---------------------+------+
| 3 | 2014-06-03 00:02:42 | fran |
+----+---------------------+------+
| 4 | 2014-06-02 00:02:40 | mark |
+----+---------------------+------+
| 5 | 2014-06-02 00:02:41 | tim |
+----+---------------------+------+
我想按日期组织用户总数。这适用于我硬编码日期
SELECT * FROM mytable WHERE timestamp LIKE '%2014-06-03%'
问:我如何按日期获取整个表的注册用户数? 这是我的尝试,但这给了我需要的2列,但count(id)返回1
SELECT timestamp, COUNT(id)
FROM mytable
WHERE timestamp >= "2014-01-01"
AND timestamp < DATE_ADD("2015-01-01", INTERVAL 1 DAY)
GROUP BY timestamp
答案 0 :(得分:1)
SELECT DATE(timestamp) AS date, COUNT(id)
FROM mytable
GROUP BY DATE(timestamp)
由于您的时间戳实际上是时间戳并且包含小时/分钟/秒数据,因此您无法直接对其进行分组 - 您也可以按hh:mm:ss进行分组。所以你按DATE(timestamp)
进行分组,它将提取日期部分(yyyy-mm-dd)并仅按此分组。