我有一个MySQL数据库,它有一个signUp表。该表有一个名为created的字段,它是注册日期的占位符。格式如:〔2014-10-12 17:48:24〕。
有许多用户在一天内注册。我正在尝试统计每天的注册人数。
我下面的代码显示单个日期,例如:【20141012000000】,但计数仍然是1。
SELECT DISTINCT TRUNCATE(created,-6) as created,
COUNT(*) as CountCreated
FROM signUp
WHERE created >= '20000101000000' AND created <= '30000101000000'
GROUP BY created
---SQL RESULT---
|------------------------|-------------------------|
|Created CountCreated
|------------------------|-------------------------|
|20141012000000 1
|------------------------|-------------------------|
|20141015000000 1
|------------------------|-------------------------|
有30多人报名参加这个日期。我使用了truncate,以便在WHERE语句中比较该值,并提交TIME,只返回DATE。时间为零。
我想要得到的:
我只想得到该日期创建字段的总数。例如,我的注册号为〔20141012000000〕是30,所以我需要像这个一样
|------------------------|-------------------------|
|Created CountCreated
|------------------------|-------------------------|
|20141012000000 30
|------------------------|-------------------------|
|20141015000000 33
|------------------------|-------------------------|
请帮我解决这个问题。。。
谢谢。
假设created
是datetime
:
SELECT date(created) as created, COUNT(*) as CountCreated
FROM signUp
GROUP BY date(created);
如果是字符串:
SELECT left(created, 10) as created, COUNT(*) as CountCreated
FROM signUp
GROUP BY left(created, 10);
在这种情况下,您还必须按照截断的值进行分组,然后去掉distinct。但更好的选择是将创建的字段设为时间戳,然后使用日期(created)。