Mysql 在过去7天内按天选择条目
我想得到过去7天的注册用户数,分组Mysql 在过去7天内按天选择条目,mysql,sql,datetime,Mysql,Sql,Datetime,我想得到过去7天的注册用户数,分组 +-----+------------+--------------+ | id | username | created | +-----+------------+--------------+ | 1 | Vlad | 1360168194 | +-----+------------+--------------+ | 2 | Test | 1360168194 | +-----+---------
+-----+------------+--------------+
| id | username | created |
+-----+------------+--------------+
| 1 | Vlad | 1360168194 |
+-----+------------+--------------+
| 2 | Test | 1360168194 |
+-----+------------+--------------+
这是我的桌子。我希望有7行带有日期的结果,并将(id)作为注册用户的结果
我尝试了不同的解决方案,但没有一个真正符合我的需要。有什么想法吗
SELECT DATE(FROM_UNIXTIME(columName)), COUNT(ID) totalCOunt
FROM tableName
WHERE DATE(FROM_UNIXTIME(columName)) BETWEEN CURDATE() + INTERVAL -7 DAY AND CURDATE()
GROUP BY DATE(FROM_UNIXTIME(columName))
datetime
或date
作为这些列的数据类型。使用Unix时间戳使使用内置日期函数成为一种PITA。据我所知,MYSQL在内部使用datetime作为Unix时间戳,但显然是一个时间字符串。我想按原样保存,那么这里最好的选择是什么?int?您试图解决什么问题,将其保存为“原样”?由于大多数函数都使用“包装器”类型,因此每次查询时都会损失一些时间,因为必须转换每个值(这意味着索引相当无用)。使用“obfucsacted”类型—首先,它允许更改内部表示,而不需要您弄乱存储。…BETWEEN
在这里可能是安全的(考虑到您只处理日期),但它仍然让我感到不安。使用显式范围要好得多:包含下限(=
),独占上限(也许我错了,但我认为你不能用这种方式“添加”日期值;认为应该是date\u add(curdate(),interval-7天)