【问题标题】:get sum of values from mysql table by month starting current month从当前月份开始按月从mysql表中获取值的总和
【发布时间】:2015-07-19 18:13:31
【问题描述】:

您好,我目前有两张表,一张包含每日条目,另一张获取这些表的总数并存储每月值。

我可以通过以下查询获得每个月和每年的总计,但我想做的只是获得月份大于等于当前月份的月份。顺便说一句,日期列采用日期格式(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"); 

【问题讨论】:

    标签: php mysql


    【解决方案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 列上使用索引。

    【讨论】:

    • @babu 。 . .这是一种类型。 curdate() 是一个函数,所以它需要括号。该表达式计算上个月的最后一天。
    • 在 from 之后添加 where 子句对我来说非常好。非常感谢
    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 2019-08-18
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多