2017-03-07 87 views
1

我想写一个SQL语句,它会返回每天的记录数。SQL dateadd and datediff

这是我的表

id |  ip  |  date 
---------------------------------------- 
1 136.196.41.91 2017-01-01 11:08:14 
2 28.158.146.198 2017-01-01 11:08:15 
3 209.140.42.236 2017-01-01 11:08:16 
4 241.184.227.171 2017-01-02 11:08:17 
5 6.183.99.169 2017-01-02 11:08:18 
6 105.18.254.15 2017-01-03 11:08:19 

预期的结果类似的话来:

2017-01-01: 3 
2017-01-02: 2 
2017-01-03: 1 

余米尝试这种

select date, count(id) 
from demo 
WHERE date >=dateadd(day,datediff(day,0,GetDate())-7,0) 
GROUP BY date 

但由于某些原因,我在得到这个错误“ phpmyadmin“

Error 

SQL query: Documentation 

select date, count(id) 
from demo 
WHERE date >=dateadd(day,datediff(day,0,GetDate())-7,0) 
GROUP BY date LIMIT 0, 25 

MySQL said: Documentation 
#1582 - Incorrect parameter count in the call to native function 'datediff' 

我找不到我做错了什么。

我认为这可能来自日期格式,所以我将它改为日期,但没有运气。

请指教。

+0

这是MSSQL或MySQL? – Whencesoever

+1

根据Mysql [DATEDIFF](https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff)的文档,在传递3时只有两个参数参数,可能的重复[调用本地函数'DATEDIFF'时不正确的参数计数](http://stackoverflow.com/questions/23250555/incorrect-parameter-count-in-the-call-to-native-function- datediff) – hassan

+0

你在'WHERE'子句中试过什么?你的目标是什么?根据你的榜样和预期的结果,你只需要简单的分组由DATE('date') –

回答

2

试试这个

SELECT DATE(`date`), count(*) FROM demo 
GROUP BY DATE(`date`) 
-- here your ordering criteria 
LIMIT 0, 25 
+0

谢谢,这是我正在寻找的。 – Joey

0
Use GROUP BY Clause only : 

SELECT date, count(id) 
FROM demo 
GROUP BY date 

you need WHERE condition means : 

SELECT date, count(id) 
FROM demo 
WHERE DATEDIFF(your_datecolumn,GETDATE()) <= 0 
GROUP BY date 
+0

第一个没有“Where”给了我需要的东西,但是这只是在日期字段被格式化为“日期”而不是“datetime”的情况下。我更喜欢用“datetime”类型来解决它。 第二个,与where条件一样,给了我和以前一样的错误。 – Joey

1

MySQLDATEDIFF功能只接受2个参数:

DATEDIFF(date1, date2) 

将返回betwee日期1和日期2等date1-date2的差异。

See w3schools.com/sql/func_datediff_mysql.asp

+0

是的,我可以看到它需要2个参数,但是在我搜索解决方案时,他们总是添加3个参数,我找不到原因。即使在下面的答案中,他们正在添加3个参数。 – Joey

+0

@Joey它取决于你正在使用的SQL语言。 'TSQL'中的'DATEDIFF'需要3个参数,'MySQL'中只有2个参数。 – waka

+0

当删除其中一个参数时,会产生一个新的错误: #1305 - FUNCTION test.dateadd不存在 – Joey

1

检查此帮助,

select date(date), count(*) from demo group by date(date);

+0

谢谢,这就是我一直在寻找的。 – Joey