sql中按月筛选日期- php,sql


Filter Dates in sql by months - php,sql

我在sql中有一个表,在这个表中我有一个带有操作日期的列,格式如下:2015-08-26 05:54:39

现在我在php中建立了一个系统,我想获得在同一个月的所有动作。

我试着运行:

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

和它返回的动作日期是在同一个月,但它可以返回的动作是在2015-09-01 00:00:00,所以我明白我需要得到在一个月的最后一天,并把它放在sql查询。

我该怎么做?

现在这是对sql:

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

幸运的是,这里有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为January, 2为February,......)12是12月)。它将根据您的数据库时间和日期设置始终是精确的。

如果你想进一步定制你的查询(选择相同的年份和月份),那么你可以在这里阅读更多关于日期的命令

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

您可以使用YEAR()和MONTH() 或者简单地使用:

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

这将不包括九月的日期。

我想它可能对你有帮助

假设您需要8月份的结果或记录,您可以使用查询

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