2015-09-05 99 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'