按月过滤sql中的日期 - php,sql

时间:2015-09-05 20:05:40

标签: php mysql sql-server

我在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");   

3 个答案:

答案 0 :(得分:3)

幸运的是,有MySQL的write()命令。

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

MONTH()

所有月份均以数字记录(1月1日,2月2月,...... 12月12月)。它将始终根据您的数据库时间和日期设置精确。

如果您想进一步自定义查询(选择相同的年份和月份),那么您可以阅读有关日期命令的更多信息here

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

答案 1 :(得分:0)

您可以使用YEAR()和MONTH()或简单如下:

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

这不包括9月的日期。

答案 2 :(得分:0)

我认为它可以帮到你

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

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