2017-03-07 88 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