2017-04-09 91 views
0

我想顯示在某個月內註冊了多少人。目前,我正在使用此代碼在mySQL上計算上一年

SELECT COUNT(*) 
FROM wp_users 
WHERE YEAR(user_registered)=YEAR(CURDATE()) 
    AND MONTH(user_registered)=MONTH(CURDATE()) - 2 

例如,此代碼將計算2個月前註冊的用戶數。但是,當我嘗試在4個月前或更長時間出現問題時,就會出現問題。基本上,它沒有考慮到去年。

****編輯*****

我希望它顯示只有一個月的計數。例如只有四月,只有三月,只有二月。我現在使用的代碼現在可以在2017年工作幾個月,因爲我使用的是WHERE YEAR(user_registered) = YEAR(CURDATE()),但是如何才能使其在上一年也可以工作?

+0

顯示你如何「使它4個月前或更多」 - 你試圖做什麼或僅僅是這個'年CURDATE()}' –

+0

我只是使用相同的代碼,但使用4而不是2. – GRS

+0

你意識到'年(CURDATE())'是2017年,所以在當年的4個月之前是不會工作的,因爲這是第4個月,在這種情況下,你需要得到前一年... –

回答

0

你可以試試這個選項:

SELECT COUNT(0) 
FROM wp_users 
WHERE YEAR(user_registered)=YEAR(DATE_SUB(CURDATE(), INTERVAL 4 MONTH)) 
AND MONTH(user_registered)= MONTH(DATE_SUB(CURDATE(), INTERVAL 4 MONTH)) 

使用DATE_SUB爲所做的減法。 MySQL Doc

+0

這會給我一個所有4個月前的計數,我希望它能夠單獨計算幾個月,例如僅二月或僅一月。 – GRS

+0

我認爲你必須更好地解釋你的問題。如果你想分開計數,你可以添加'GROUP BY'子句,但我不是sur e如果我理解你的問題... – winter

+0

我想統計在三月,二月,一月份單獨註冊的用戶數量。 – GRS

0

如果我理解你是對的,你想要一個12個月的結果嗎?一個簡單的解決方案將是

SELECT MONTH(user_registered) as month, COUNT(*) FROM wp_users GROUP BY month; 

但是,如果沒有人在某個月註冊,則不會返回一行。爲了做到這一點,你需要使用一個子查詢,它返回從1到12的列表。