2015-09-05 96 views
1

我有一個表中的SQL和該表中我有柱與這種格式的行動日期:2015年8月26日5時54分39秒篩選日期由月 - PHP,SQL

現在我在php中構建了一個系統,我想要獲得同一個月中的所有操作。

我嘗試運行:

SELECT * FROM `Expenses` WHERE DateAction between '2015-08-01 00:00:00' and '2015-09-01 00:00:00' 

及其回報的行動日期,這是在同一個月,但它可以返回那是在2015年9月1日00:00:00動作所以我明白我需要得到這個月的最後一天,並把它放在SQL查詢中。

我該怎麼做?

眼下這是調用SQL:

$query = mysql_query("SELECT * FROM `Expenses` WHERE `accountid` = $accountId"); 

回答

3
幸運的是

,有MySQL的MONTH()命令。

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_month

SELECT * FROM `Expenses` WHERE MONTH(DateAction) = 8; 
//Selects all rows in the month "August" 

所有月份的數字記錄(1月,2月是,...... 12月)。根據您的數據庫時間和日期設置,它總是精確的。

如果您想進一步自定義您的查詢(選擇相同的年份和月份),那麼你可以閱讀更多有關日期命令here

SELECT * FROM `Expenses` WHERE Year(DateAction) = '2015' AND MONTH(DateAction) = '8'; 
//Selects all rows in year 2015 and month "August" 
0

你可以使用YEAR()和MONTH()或簡單爲:

WHERE 
DateAction >= '2015-08-01 00:00:00' 
and 
DateAction < '2015-09-01 00:00:00' 

這不包括9月的日期。

+1

謝謝大家! =] – Rafael

+0

如果你在尋找性能,你應該使用它,因爲year()和month()函數需要花費一些時間來獲取每個年份和月份的開銷。只是爲了明確爲什麼我會使用這個解決方案。 – MrSimpleMind

0

我認爲它可以幫助你

假設,如果你想要的結果或八月的記錄,你可以將用戶查詢

SELECT * FROM Expenses WHERE DATE_FORMAT(DateAction,'%c')='8'