去年的这个日期的MySQL语句

时间:2017-07-12 18:16:40

标签: php mysql

我对这些php mysql语句感到困惑。

我需要从表格中的相同列(金额)中获得四个不同的结果。

函数找到以下内容的总和(数量):
年初至今 去年给了时间 去年总捐赠数量 过去30天给予

它们似乎都是相同的变体。我不知道如何让LastYearNow显示正确的结果。如何显示从2016年初到今天2016年的结果?

public function getSum() {
        $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 12 MONTH) ");           
       return $query->row; 
}
    public function lastThirty() {
        $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 1 MONTH)" );            
       return $query->row; 
}
public function lastYearNow() {
        $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 12 MONTH) ");           
       return $query->row; 
}
    public function lastYearTotal() {
        $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where YEAR(date_added) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))" );           
       return $query->row; 
}

1 个答案:

答案 0 :(得分:0)

lastYearNow的查询目前正在计算过去12个月的总数。相反,如果您想计算从去年1月到当前日期的去年总计,您需要使用BETWEEN条款:

SELECT SUM(amount) as amount_sum 
FROM donate 
WHERE date_added BETWEEN 
MAKEDATE(YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)), 1, 1)
AND
(CURDATE() - INTERVAL 12 MONTH)
警告:我没有在我面前安装MySQL,因此语法可能不太正确。