2015-07-19 150 views
0

嗨,我现在有两个表,一个有日常条目,其他的获取这些数据的总数并存储每月的值。从当前月份开始的月份得到mysql表中数值的总和

我可以通过下面的查询得到每个月和每年的总计,但是我想要做的只是获得月份大于和等于当前月份的月份。顺便说一句日期栏是日期格式(YYYY-MM-DD)

$revbyMonth = $conn->prepare("SELECT EXTRACT(MONTH FROM date) as month, EXTRACT(YEAR FROM date) as year, SUM(rev) as total FROM {$tempName} GROUP BY year, month"); 

回答

1

你想要from条款后立即添加一个where条款。我认为这会对你有用。如果日期没有时间部分:

where date > date_sub(curdate(), interval day(curdate()) day) 

表达date_sub(curdate(), interval day(curdate()) day)得到前一个月的最后一天。如果日期有时间分量:

where date >= date_sub(curdate(), interval day(curdate()) - 1 day) 

应该工作。

注意:这是比处理date使用功能的其它方法,如更好:

where year(date) > year(curdate()) or 
     (year(date) = year(curdate()) and month(date) >= month(curdate())) 

使用的功能防止来自MySQL的上date柱上使用的索引。

+0

@babu。 。 。这是一种类型。 'curdate()'是一个函数,所以需要括号。该表达式计算前一个月的最后一天。 –

+0

加入where子句后,对我来说算不错吧。非常感谢 – babu