2014-05-18 69 views
0

我想寫一個mysql查詢來檢索許多事情的計數。我需要知道的一件事是,有多少條目的日期與查詢時的當前日期相比少於1個月。我已經搜索了堆棧溢出了很多,並諮詢了mysql文檔,但沒有任何我正在嘗試似乎工作。它一直告訴我我的語法錯誤。我很茫然。使用日期函數mysql查詢時遇到問題

我有很多關於這個查詢,其他一切似乎工作正常。

我使用mysql和phpmyadmin來管理我的數據庫,並且我正在C#/ visual studio環境中編程。我不知道我使用的是哪個版本的mysql,但根據phpmyadmin的文檔,我至少使用5.0版本。我查閱了mysql v5.0的文檔,我查看了更新的版本,並且我嘗試使用的sql函數沒有改變。所以不應該有這個查詢不起作用的原因,但從來沒有它不起作用的原因。

SELECT count(*) total, ... sum(case where Date <= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) then 1 else 0 end) lastmonth from table; 

如果我刪除了上面的sum語句,其餘的查詢確實有效。 sum之前的語句用逗號分隔,我看不出任何錯誤的語法,所以它必須與where語句中的sql函數有關。我從mysql文檔頁面逐字拷貝了這個語句,只改變了它所比較的​​變量的名字,並且間隔爲1個月。

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

所以我完全被卡住。可以使用一些幫助!謝謝。

回答

0

我能夠得到一個使用不同功能的解決方案。我認爲問題在於CURDATE()不是mysql服務器識別的函數,但是CURRENT_DATE()是。奇怪的是,mysql文檔說他們是一樣的。作爲參考,這裏是我最終解決該查詢:

sum(case when MONTH(Date) = MONTH(CURRENT_DATE()) then 1 else 0 end) lastmonth 

審查我的要求後,因爲它變成了我需要檢索的次數爲「日期」的最後一個月內的數量,即開始查詢從本月的第一天開始,直到本月的最後一天。